在学习java的过程中,遇到很多的问题,通过百度各个大牛的博客,最终都解决了,分享出来,供大家参考,也避免自己下次忘记在四处查阅,有说的不对的地方请谅解,并加以更正谢谢各位!
springmvc中拦截器的配置
1.定义一个拦截器
package com.heitian.ssm.intercept;
import com.heitian.ssm.model.User;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by Administrator on 2016/12/21.
*/
public class LoginInterceptorAdapter extends HandlerInterceptorAdapter{
public String[] login ;//注入springmvc中配置的值,不进行拦截
public String[] getLogin() {
return login;
}
public void setLogin(String[] login) {
this.login = login;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
boolean flag=false;
String url=request.getRequestURI().toString();
//添加判断是否拦截的条件
for (String str:login){
if (url.contains(str)){
flag=true;
break;
}
}
//判断是否拦截
if (!flag){
//获取session存储的users
User user=(User)request.getSession().getAttribute("users");
if (user !=null){
flag=true;
}else{
response.sendRedirect("/webssm/login.jsp");
}
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2.springmvc中配置注入
<mvc:interceptors>
<!-- session超时 -->
<mvc:interceptor>
<mvc:mapping path="/*/*"/>//这里配置的所有路径,可按需更改
<bean class="com.heitian.ssm.intercept.LoginInterceptorAdapter">
<property name="login">
<list>
<!-- 如果请求中包含以下路径,则不进行拦截 -->
<value>/login</value>
<value>/js</value>
<value>/css</value>
<value>/image</value>
<value>/images</value>
</list>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
3.web.xml中配置 <!-- spring mvc servlet-->
<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:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<!--1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。-->
<async-supported>true</async-supported><!--是否异步-->
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!-- 此处也可以配置成 *.do 形式 -->
<url-pattern>/</url-pattern>
</servlet-mapping>