转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html
前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构
1需求
以案例作为驱动。
SpringMVC和MyBatis使用一个案例(商品订单管理)。
功能需求:商品列表查询
2环境准备
数据库环境:mysql5.6
java环境:
jdk1.7
MyEclipse2014
SpringMVC版本:spring3.2
需要spring3.2所有jar(一定要包括spring-webmvc-3.2.0.RELEASE.jar)
新建一个web项目,将所需jar包拷贝至lib下。
3配置前端控制器
在web.xml中配置前端控制器。
xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SpringMVCdisplay-name> <welcome-file-list> <welcome-file>index.jspwelcome-file> welcome-file-list> <servlet> <servlet-name>springmvcservlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class> <init-param> <param-name>contextConfigLocationparam-name> <param-value>classpath:springmvc.xmlparam-value> init-param> <load-on-startup>1load-on-startup> servlet> <servlet-mapping> <servlet-name>springmvcservlet-name> <url-pattern>*.actionurl-pattern> servlet-mapping> web-app>
DispathcerServlet作为springmvc的中央调度器存在,DispatcherServlet创建时会默认从DispatcherServlet.properties文件加载springmvc所用的各个组件,如果在springmvc.xml中配置了组件则以springmvc.xml中配置的为准,DispatcherServlet的存在降低了springmvc各各组件之间的耦合度。
4配置处理器适配器
在classpath下的springmvc.xml中配置处理器适配器。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> beans>
通过查看源码:
此适配器能执行实现Controller接口的Handler。
5开发Handler
需要实现Controller接口,才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter适配器执行。
public class ItemsController1 implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { //调用service查找数据库,查询商品列表,这里使用静态数据模拟 ListitemsList=new ArrayList (); Items items_1=new Items(); items_1.setName("联想笔记本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemsList.add(items_1); itemsList.add(items_2); //返回ModelAndView ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("itemsList", itemsList); modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; } }
6视图编写
创建/WEB-INF/jsp/order/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"%> DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>查询商品列表title> head> <body> <form action="${pageContext.request.contextPath }/item/queryItem.action" method="post"> 查询条件: <table width="100%" border=1> <tr> <td><input type="submit" value="查询"/>td> tr> table> 商品列表: <table width="100%" border=1> <tr> <td>商品名称td> <td>商品价格td> <td>生产日期td> <td>商品描述td> <td>操作td> tr> <c:forEach items="${itemsList }" var="item"> <tr> <td>${item.name }td> <td>${item.price }td> <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>td> <td>${item.detail }td> <td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改a>td> tr> c:forEach> table> form> body> html>
7配置Handler
在spring容器中(springmvc.xml)加载编写的Handler。
<bean name="/queryItems.action" class="joanna.yan.ssm.controller.ItemsController1"/>
8配置处理器映射器
在classpath下的springmvc.xml中配置处理器映射器。
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
9配置视图解析器
需要在springmvc.xml中配置解析jsp的视图解析器。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
10项目部署调试
将项目部署至Tomcat,访问http://localhost:8080/SpringMVC/queryItems.action
效果图:
从目前上面的代码来看,springmvc中一个类就一个方法,而struts中一个类可以写多个方法,很不方便。早期确实是这么干的,但是后来SpringMVC提倡用注解开发。
Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(二)
如果此文对您有帮助,微信打赏我一下吧~