SpringMVC -- 拦截器技术1 (6)
来源:互联网 发布:d3.v4.min.js 编辑:程序博客网 时间:2024/06/05 02:21
直接上代码,不逼逼了...
显示Demo结构图.....
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/configs/dispatcher-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> <!-- 配置过滤器,解决中文乱码问题 --> <filter><filter-name>encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf8</param-value></init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
dispatcher-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"><!-- 自动扫面包 --><context:component-scan base-package="com.springmvc.handlers"></context:component-scan><!-- 视图配置 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"></property><property name="suffix" value=".jsp"></property></bean><!-- 注册拦截器 --><mvc:interceptors><mvc:interceptor><mvc:mapping path="/testModelAndView"/><bean class="com.springmvc.interceptor.TestInterceptor"></bean></mvc:interceptor></mvc:interceptors></beans>
Main.java
package com.springmvc.handlers;import java.util.Date;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class Main {private static final String SUCCESS = "success";@RequestMapping("/testModelAndView")public ModelAndView testModelAndView(String name,String password){ModelAndView modelAndView = new ModelAndView();System.out.println("进入了控制器的modelAndView()方法");System.out.println("name: "+name);System.out.println("password: "+password);modelAndView.setViewName("success");modelAndView.addObject("msg",new Date()+" From testModelAndView().");return modelAndView;}/* * 测试 */@RequestMapping("/testHello")public String sayHello(){System.out.println("Hello");return SUCCESS;}}
package com.springmvc.interceptor;import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;/** * 模拟拦截器的实现 * 1.编写拦截器类 实现HandlerIntercaptor接口. * 2.将拦截器注册进SpringMVC框架中. * 3.配置拦截器的拦截规则. * * * 拦截器的方法介绍: * 1.preHandle方法,在请求被处理之前进行调用. * 2.postHandle方法,在请求被处理之后进行调用. * 3.afterCompletion方法,在请求结束之后才进行调用. * * 注意: * 当 preHandle()方法返回false时, 我们的请求,并不会到达控制器,也不会执行到 postHandle 和 afterComletion方法. * * @author CYX * */public class TestInterceptor implements HandlerInterceptor {/** * 请求结束之后才进行调用 * (请求被结束响应之后,视图已经被添置出来之后,最后调用的一个方法.) * 关闭资源,关闭数据流.不太常用. * * */public void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {System.out.println("执行到了 afterCompletion()");}/** * 请求被处理之前进行调用 * * ModelAndView参数: * 可以通过ModelAndView参数来改变显示的视图,或修改发往视图的方法. * * 请求到达目的地结束之后, 请求进行返回的时候,可以使用postHandle() 对返回的数据,进行操作 * */public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception {System.out.println("执行到了 postHandle()");System.out.println("修改发往视图的参数.");arg3.addObject("msg", new Date()+" FROM postHandle");//对返回数据进行修改操作arg3.setViewName("error"); //改变返回目标地址}/** * 请求被处理之后进行调用. * 该方法返回值的作用: * 是否需要将 当前的请求拦截下来. *如果返回false,请求将被终止 *如果返回true, 请求会继续运行. * * 注意: * 当 preHandle()方法返回false时, 我们的请求,并不会到达控制器,也不会执行到 postHandle 和 afterComletion方法. * * Object arg2: * 该参数表示的是被拦截的请求的目标对象. * (这里拦截的目标就是 testModelAndView()方法 ) */public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2) throws Exception {System.out.println("执行到了 preHandle()");return true;}}
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <% String userName="cyx"; %> <% out.println(userName); %> <%=userName %> <br><br> <form action="testModelAndView"> 姓名:<input type="text" name="name"> 密码:<input type="text" name="password"> <input type="submit" value="提交"> </form><a href="testModelAndView">testModelAndView</a> <br><br> <a href="testHello">testHello</a> </body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%><!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=ISO-8859-1"><title>Insert title here</title></head><body>Success page<br><br>${msg}</body></html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%><!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=ISO-8859-1"><title>Insert title here</title></head><body>This is Error.jsp<br><br>${msg }</body></html>
然后部署运行吧....
说一下大致的运行结果.
postHandle() 不进行配置的时候, 输出视图结果,就是 testModelAndView() 返回的设置的参数.
配置了postHandle()之后,可以在它里面,对返回的参数数据,和跳转目标 进行修改.
具体的话 大家尝试着 注释掉一些 postHandle()中的配置代码 试试看.....
-----更新于2016 4 24-----------
今天突然发现了,为什么页面上总是乱码了...真是蠢炸了....
index.jsp 和success.jsp
上面的设置的是 ISO-8859-1编码格式....
记得要改过来....
0 0
- SpringMVC -- 拦截器技术1 (6)
- springmvc梳理6-----springmvc拦截器
- [SpringMVC] SpringMVC拦截器
- SpringMVC使用(1) 拦截器
- SpringMVC-----9、SpringMVC拦截器
- springMVC—springMVC拦截器
- springMVC 拦截器
- SpringMVC—拦截器
- springmvc 拦截器配置
- SpringMvc拦截器
- SpringMvc 拦截器
- springMVC 拦截器
- springmvc登录拦截器
- springMVC之拦截器
- SpringMVC使用拦截器
- springMVC 自定义拦截器
- springmvc拦截器实现
- springMVC 拦截器
- JVM内存管理及垃圾回收
- Oracle审计功能
- dbunit之org.dbunit.dataset.DataSetException: java.net.MalformedURLException解决方法
- Android Studio下提示Couldn't load BaiduMapSDK_v3_1_0
- UBA项目描述
- SpringMVC -- 拦截器技术1 (6)
- 【感悟】梳理心灵上的尘埃,继续向前
- UVA - 457 Linear Cellular Automata
- 同步、异步、阻塞与非阻塞
- Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件
- 把word excel ppt 导入到右键快捷菜单中
- 不熟悉的关键字们
- Download Fedora 16 CD / DVD ISO
- 重写ImageSwtichView