web.xml代码
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 指定Spring配置文件位置 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mybatis-config.xml, classpath: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> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter>
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:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-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/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --> <context:component-scan base-package="com.ssm.*"></context:component-scan> <mvc:annotation-driven/> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean> <!-- 拦截器 --> <mvc:interceptors> <bean class="com.interceptor.MyInterceptor"/> </mvc:interceptors> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 如果使用jstl的话,配置下面属性 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean> </beans>
拦截器代码
package com.interceptor;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.ssm.service.UserService;
public class MyInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception arg3)
throws Exception {
System.out.println("afterCompletion");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2, ModelAndView model) throws Exception {
System.out.println("postHandle");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2) throws Exception {
System.out.println("进入拦截器....");
// String url = request.getMethod();
// System.out.println("getMethod:" + url);
// 打印getMethod:GET
// String url2 = request.getRequestURI();
// System.out.println("getRequestURI:" + url2);
// 打印getRequestURI:/04-day26-springmvc_mybatis/action/checkLogin
// String url3 = request.getServletPath();
// System.out.println("getServletPath:" + url3);
// 打印getServletPath:/action/checkLogin
// StringBuffer url4 = request.getRequestURL();
// System.out.println("getRequestURL:" + url4);
// 打印getRequestURL:http://localhost:8080/04-day26-springmvc_mybatis/action/checkLogin
// String url = request.getContextPath();
// System.out.println(url);
// 打印04-day26-springmvc_mybatis
//判断Session缓存里面的user是否存在,如果存在则说明用户登入过,放行
if(request.getSession().getAttribute("user") != null){
System.out.println("用户已经登入过了...");
return true;
}else{
//判断没有登入过的用户,是不是提交登入,如果是则放行
if("/action/checkLogin".equals(request.getServletPath())){
System.out.println("登入路径为" + request.getServletPath() +",正确,登入成功!");
return true;
//以上两者都不是,则是违法操作,进行拦截
}else{
System.out.println("------->你被拦截了...");
//这里需要注意的是,拦截后如果用response.sendRedirect(arg0)返回页面,那么将不能用request.setAttribute("")传值;
request.setAttribute("msg", "操作违法,请重新登入!");
request.getRequestDispatcher("../index.jsp").forward(request, response);
return false;
}
}
}
}