第一步,导入spring jar包(commons-logging-1.0.4.jar、jstl.jar)
第二步,项目配置文件web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
第三步,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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" > <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --> <context:component-scan base-package="com.test.controller" /> <!--对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <mvc:interceptors> <bean class="com.test.interceptor.MyInterceptor1"></bean> <!-- 拦截所有springmvc的url --> <mvc:interceptor> <mvc:mapping path="/employee" /> <bean class="com.test.interceptor.MyInterceptor2"></bean> </mvc:interceptor> </mvc:interceptors> </beans>
第四步,控制器EmployeeController.java
package com.test.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class EmployeeController {
@RequestMapping("/employee")
public String request(String name, Model model, ModelMap modelMap, HttpServletRequest request) {
model.addAttribute("model", "测试model.addAttribute()方法");
modelMap.addAttribute("modelMap1", "测试ModelMap.addAttribute()方法");
modelMap.put("modelMap2", "测试ModelMap.put()方法");
request.setAttribute("request1", "测试request.setAttribute()方法");
request.getSession().setAttribute("session1", "测试request.getSession().setAttribute方法");
return "result";
}
}
第五步,拦截器MyInterceptor1.java
package com.test.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class MyInterceptor1 implements HandlerInterceptor {
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
Exception arg3) throws Exception {
System.out.println("最后执行,一般用于释放资源!");
}
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
ModelAndView arg3) throws Exception {
System.out.println("action执行之后,生成视图之前执行!");
}
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2)
throws Exception {
System.out.println("action之前执行!");
return true; // 继续执行action
}
}
拦截器MyInterceptor2.java
package com.test.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class MyInterceptor2 extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2)
throws Exception {
System.out.println("MyInterceptor2.preHandle()");
return true; // 继续执行action
}
}
前台页面/jsp/result.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>结果</title>
</head>
<body>
${model }<br>
${requestScope.model }<br>
${modelMap1 }<br>
${requestScope.modelMap1 }<br>
${modelMap2 }<br>
${requestScope.modelMap2 }<br>
${requestScope.request1 }<br>
${sessionScope.session1 }<br>
</body>
</html>
浏览器输入:
http://127.0.0.1:9900/springmvc_006/employee
页面显示:
后台打印:
action之前执行!
MyInterceptor2.preHandle()
action执行之后,生成视图之前执行!
最后执行,一般用于释放资源!