深入分析springmvc中的处理器映射器和适配器

ゞ 浴缸里的玫瑰 2022-05-23 01:50 249阅读 0赞

前言 随着springmvc的注解功能使用,springmvc已经逐渐取代struts2成为目前比较主流的mvc框架,在springmvc中除了核心控制器DispatcherServlet这个核心组件之外,还有在springmvc中的处理器映射器和适配器,这两个组件在springmvc整个的运行流程之中扮演一个很重要的角色,至于映射器和适配器这两个组件他们的功能,我们可以这样理解,映射器主要是跟我们在浏览器上输入的url来映射对应的Handle,具体的映射规则需要根据使用哪一个映射器来决定,而适配器主要是决定调用哪个Handler来实现具体的业务逻辑,随着注解的发展,映射器和适配器的使用也越来越方便,但是熟悉这两个组件的底层实现,对我们在日常开发和对springmvc的理解也是有帮助的,下面我们一起来看看非注解的映射器和适配器具体实现案例。

1.目录

70

2.jar包:

70 1

3.web.xml配置文件:

<?xml version=“1.0” encoding=“UTF-8”?>



springmvc

org.springframework.web.servlet.DispatcherServlet





contextConfigLocation

classpath:springmvc.xml



springmvc

*.action

  1. <welcome-file>index.jsp</welcome-file>

4. 配置文件springmvc.xml:(加载控制器ItemsController1)























itemsController1

itemsController1



















5.实体类Items.Java:

package com.abc.ssm.po;

import java.util.Date;

public class Items {

  1. **private** Integer id;
  2. **private** String name;
  3. **private** Float price;
  4. **private** String pic;
  5. **private** Date createtime;
  6. **private** String detail;
  7. **public** Integer getId() \{
  8. **return** id;
  9. \}
  10. **public** **void** setId(Integer id) \{
  11. **this**.id = id;
  12. \}
  13. **public** String getName() \{
  14. **return** name;
  15. \}
  16. **public** **void** setName(String name) \{
  17. **this**.name = name == **null** ? **null** : name.trim();
  18. \}
  19. **public** Float getPrice() \{
  20. **return** price;
  21. \}
  22. **public** **void** setPrice(Float price) \{
  23. **this**.price = price;
  24. \}
  25. **public** String getPic() \{
  26. **return** pic;
  27. \}
  28. **public** **void** setPic(String pic) \{
  29. **this**.pic = pic == **null** ? **null** : pic.trim();
  30. \}
  31. **public** Date getCreatetime() \{
  32. **return** createtime;
  33. \}
  34. **public** **void** setCreatetime(Date createtime) \{
  35. **this**.createtime = createtime;
  36. \}
  37. **public** String getDetail() \{
  38. **return** detail;
  39. \}
  40. **public** **void** setDetail(String detail) \{
  41. **this**.detail = detail == **null** ? **null** : detail.trim();
  42. \}

}

6.开发非注解Handler(使用非注解的映射器和非注解的适配器)

控制器ItemsController1:

package com.abc.ssm.controller;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

import com.abc.ssm.po.Items;

public class ItemsController1 implements Controller {

public ModelAndView handleRequest(HttpServletRequest request,

HttpServletResponse response) throws Exception {

//1调用Service查询数据库商品列表,此处用静态数据模拟

List itemsList= new ArrayList();

  1. Items items\_1 = new Items();
  2. items\_1.setName("联想笔记本");
  3. items\_1.setPrice(4000f);
  4. items\_1.setCreatetime(new Date());
  5. items\_1.setDetail("ThinkPad");
  6. Items items\_2 = new Items();
  7. items\_2.setName("华为手机");
  8. items\_2.setPrice(4000f);
  9. items\_2.setCreatetime(new Date());
  10. items\_2.setDetail("华为P10");
  11. itemsList.add( items\_1);
  12. itemsList.add( items\_2);

//2准备ModelAndView

ModelAndView modelAndView = new ModelAndView();

//在jsp中通过“itemsList”取数据

modelAndView.addObject(“itemsList”,itemsList);

//3指定视图

String viewName = “/WEB-INF/jsp/items/itemsList.jsp”;

modelAndView.setViewName(viewName);

return modelAndView;

}

}

7.JSP页面itemsList.jsp:

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

  1. pageEncoding=*"UTF-8"*%>

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core“ prefix=“c” %>

<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt“ prefix=“fmt”%>

<%@page isELIgnored=“false”%>

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd">







查询商品列表







查询条件:











商品列表:





































商品名称 商品价格 生产日期 商品描述 操作
${item.name } ${item.price } ${item.detail } 修改






8.运行路径:http://localhost:8080/SpringMVC\_01/queryItems.action

9.运行结果:

70 2

点击打开链接


发表评论

表情:
评论列表 (有 0 条评论,249人围观)

还没有评论,来说两句吧...

相关阅读