深入分析springmvc中的处理器映射器和适配器
前言 随着springmvc的注解功能使用,springmvc已经逐渐取代struts2成为目前比较主流的mvc框架,在springmvc中除了核心控制器DispatcherServlet这个核心组件之外,还有在springmvc中的处理器映射器和适配器,这两个组件在springmvc整个的运行流程之中扮演一个很重要的角色,至于映射器和适配器这两个组件他们的功能,我们可以这样理解,映射器主要是跟我们在浏览器上输入的url来映射对应的Handle,具体的映射规则需要根据使用哪一个映射器来决定,而适配器主要是决定调用哪个Handler来实现具体的业务逻辑,随着注解的发展,映射器和适配器的使用也越来越方便,但是熟悉这两个组件的底层实现,对我们在日常开发和对springmvc的理解也是有帮助的,下面我们一起来看看非注解的映射器和适配器具体实现案例。
1.目录
2.jar包:
3.web.xml配置文件:
<?xml version=“1.0” encoding=“UTF-8”?>
<welcome-file>index.jsp</welcome-file>
4. 配置文件springmvc.xml:(加载控制器ItemsController1)
5.实体类Items.Java:
package com.abc.ssm.po;
import java.util.Date;
public class Items {
**private** Integer id;
**private** String name;
**private** Float price;
**private** String pic;
**private** Date createtime;
**private** String detail;
**public** Integer getId() \{
**return** id;
\}
**public** **void** setId(Integer id) \{
**this**.id = id;
\}
**public** String getName() \{
**return** name;
\}
**public** **void** setName(String name) \{
**this**.name = name == **null** ? **null** : name.trim();
\}
**public** Float getPrice() \{
**return** price;
\}
**public** **void** setPrice(Float price) \{
**this**.price = price;
\}
**public** String getPic() \{
**return** pic;
\}
**public** **void** setPic(String pic) \{
**this**.pic = pic == **null** ? **null** : pic.trim();
\}
**public** Date getCreatetime() \{
**return** createtime;
\}
**public** **void** setCreatetime(Date createtime) \{
**this**.createtime = createtime;
\}
**public** String getDetail() \{
**return** detail;
\}
**public** **void** setDetail(String detail) \{
**this**.detail = detail == **null** ? **null** : detail.trim();
\}
}
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
Items items\_1 = new Items();
items\_1.setName("联想笔记本");
items\_1.setPrice(4000f);
items\_1.setCreatetime(new Date());
items\_1.setDetail("ThinkPad");
Items items\_2 = new Items();
items\_2.setName("华为手机");
items\_2.setPrice(4000f);
items\_2.setCreatetime(new Date());
items\_2.setDetail("华为P10");
itemsList.add( items\_1);
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”
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">
8.运行路径:http://localhost:8080/SpringMVC\_01/queryItems.action
9.运行结果:
点击打开链接
还没有评论,来说两句吧...