【J2EE实验-3】Spring MVC
一、实验目的
1.理解Spring MVC的处理流程
2. 掌握Spring MVC的基本使用
3. 掌握Spring MVC的参数传递
二、实验学时及环境
- 实验学时:2
- 实验环境:IDEA,JDK8,Tomcat7,Maven,Mysql5,Navicat
- 实验设备:PC
三、实验内容和步骤
(给出工程项目的代码结构图,以及关键代码的截图,并对程序的运行结果进行截图,保证截图的清晰。实验要求中提到“分析原因”的地方,实验报告中必须给予你的解释。)
1. 使用SpringMVC实现页面输出
(1)为超市订单管理系统搭建Spring MVC环境
(2)实现前端页面内输出“学框架就学Spring MVC!”
(3)HandlerMapping:BeanNameUrlHandlerMapping
(4)ViewResolver :InternalResourceViewResolver
导入jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
在web.xml中配置Servlet
<!--—————————配置springmvc核心控制器DispatcherServlet————————-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--配置标记容器在启动的时候就加载此DispatcherServlet,即自动启动-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
创建SpringMvc的配置文件springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean name="/welcome" class="com.wxl.smbms.servlet.test.IndexController"/>
<!--Spring MVC的配置文件,网站跳转逻辑的控制-->
<!-- 配置视图解析器,方便页面返回 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
</beans>
创建控制器
public class IndexController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
return new ModelAndView("index");
}
}
在创建view
在webapp/web-inf/jsp/创建index.jsp
<body>
<h2>学框架就学SpringMVC </h2>
</body>
2.更改Spring MVC的处理器映射的配置为支持注解式处理器.
(1)HandlerMapping:mvc:annotation-driven/
(2)ViewResolver:InternalResourceViewResolver
(3)加入Log4j进行后台日志输出
更改SpringMvc的配置文件springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--Spring MVC的配置文件,网站跳转逻辑的控制-->
<context:component-scan base-package="com.wxl.smbms.servlet">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<mvc:annotation-driven/>
<!-- 配置视图解析器,方便页面返回 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
</beans>
更改控制器
@Controller
public class IndexController {
@RequestMapping("/welcome")
public String index(){
return "index";
}
}
输入网址进行测试
3. 在上例的基础上,实现View到Contoller的参数传递:
(1)在index.jsp页面,输入用户编码
(2)点击提交按钮,页面跳转到success.jsp页面,并在该页面输出提交的用户编码
(3)要求在控制台输出从前台获取的用户编码的值
更改控制器
@Controller
public class IndexController {
@RequestMapping("/welcome")
public String index(){
return "index";
}
@RequestMapping("/index.html")
public String index1(){
return "index";
}
@RequestMapping("/test.html")
public String test(@RequestParam String userCode , Model model){
model.addAttribute("userCode",userCode);
return "success";
}
}
更改index.jsp
<body>
<h2>学框架就学SpringMVC </h2>
<form action="${pageContext.request.contextPath }/test.html">
请输入userCode:
<input name="userCode">
<button type="submit" >提交</button>
</form>
</body>
添加页面success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
userCode:${userCode}
</body>
</html>
四、实验总结
可以用两种方法进行处理器映射,注解方式更为灵活。使用更加方便。
<context:component-scan base-package=“com.wxl.smbms.servlet”>的作用:
如果没有此标签,那么标注了@Controller的bean仅仅是一个普通的javabean,而不是一个可以处理请求的控制器
mvc:annotation-driven/的作用:
该标签会自动注册DefaultAnnotationHandlerMapping(处理器映射)与AnnotationMethodHandlerAdapter(处理器适配器)这两个bean ,springMVC需要通过这两个Bean实例来完成对@Controller和@RequestMapping等注解的支持,从而找出url与handler method的关系并予以关联完成spring容器中的这两个bean的注册,是springMVC为@Controller分发请求的必要支持