springmvc登陆拦截案例
一、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>z-springmvc-loginIntercept</display-name>
<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:mvc.xml</param-value>
</init-param>
<load-on-startup></load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</we
二、mvc.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: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 id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<!-- 结果视图的前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!-- 结果视图的后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<!-- 自动扫描com.springmvc.controller包下的controller-->
<context:component-scan base-package="com.springmvc.controller"></context:component-scan>
<!-- 拦截器配置-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/><!-- 拦截所有-->
<bean class="com.springmvc.intercept.LoginIntercept">
<property name="allowedPass">
<list>
<value>login.do</value><!--不拦截login.do-->
</list>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
三、controller
@Controller
public class LoginController {
//登陆
@RequestMapping("/login")
public ModelAndView view(User user,HttpSession session){
ModelAndView view = new ModelAndView();
//判断user是否为空 以及 用户名和密码是否正确
if(user.getUsername()!=null && user.getPassword()!=null && user.getUsername().equals("jjz") && user.getPassword().equals("123456")){
session.setAttribute("user", user);//如果正确,将user保存在session中
view.setViewName("index");//跳转到index
}else{
view.setViewName("login");//否则还是在登陆页面
} return view;
}
//add
@RequestMapping("/add")
public ModelAndView add(){
System.out.println("add");//在控制台打印add
ModelAndView view = new ModelAndView();
view.setViewName("index");//跳转到index页面
return view; }
}
四、intercept、
public class LoginIntercept implements HandlerInterceptor{
private List<String> allowedPass;//允许通过的url集合
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object obj) throws Exception {
Object user = request.getSession().getAttribute("user");//获取session中的user
if(user!=null)//如果user不为空,直接返回true
return true;
String url = request.getRequestURL().toString();//获取url
for (String temp : allowedPass) {//循环允许通过的url集合,检验当前的url是否在允许通过的url集合中
if(url.endsWith(temp)){//如果是,直接返回true
return true;
}
}
response.sendRedirect(request.getContextPath()+"/jsp/login.jsp");//否则直接重定向的login.jsp(此处错误,不能直接访问web-inf下的页面)
return false;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object obj, ModelAndView view) throws Exception { } @Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object obj, Exception exception)
throws Exception { }
//setAllowedPass
public void setAllowedPass(List<String> allowedPass) {
this.allowedPass = allowedPass;
}
}
springmvc登陆拦截案例的更多相关文章
- springmvc 登陆拦截器 配合shiro框架使用
public class LoginHandlerInterceptor extends HandlerInterceptorAdapter{ @Override public boolean pre ...
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- SpringMVC利用拦截器防止SQL注入
引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...
- 转 :关于springmvc使用拦截器
原博客: http://elim.iteye.com/blog/1750680 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的 ...
- 10、SpringBoot-CRUD登陆拦截
1.前端页面的设置 index.html <input type="text" class="form-control" name="usern ...
- 初学springMVC的拦截器
springMvc拦截器的执行顺序! 拦截器的各个方法的作用: /** * 登录验证拦截器 */ public class Intercepter implements HandlerInt ...
- SpringMVC:拦截器
SpringMVC:拦截器 概述 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过 ...
- 【Java EE 学习 70 上】【数据采集系统第二天】【数据加密处理】【登陆验证】【登陆拦截器】【新建调查】【查询调查】
一.数据加密处理 这里使用MD5加密处理,使用java中自带加密工具类MessageDigest. 该类有一个方法digest,该方法输入参数是一个字符串返回值是一个长度为16的字节数组.最关键的是需 ...
- Spring+springmvc+Mybatis整合案例 annotation版(myeclipse)详细版
Spring+springmvc+Mybatis整合案例 Version:annotation版 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version=&qu ...
随机推荐
- clip 属性剪裁绝对定位元素
如果left >= right或者bottom <= top,则元素会被完全裁掉而不可见,即“隐藏”.通过这种方式隐藏的元素是可以被屏幕阅读器等辅助设备识别的,从而提高了页面的可用性. I ...
- 关于JAVA学习计划和感想
学习计划第一阶段: JAVA语言基础知识.包括异常.IO流.多线程.集合类. 要求:异常------掌握try-catch-finally的使用 IO流------掌握字 ...
- PHP explode()函数
源起:将日期格式的字符串拆分成年.月.日,用于组织关系介绍信的特定位置打印.感谢倪同学提供思路 定义和用法 explode()函数把字符串分割为数组 语法 explode(separator,stri ...
- Excel替换应用
* 是通配符 ,代表任意字符 ?也是通配符, 代表单个字符替换回车 : 按住alt键不放,然后依次通过数字键盘输入1和0两个数字,放开数字键后再放开alt键.
- Python 基礎 - 淺copy補充說明
在 import copy 這個模塊裡 基於第一個列表來做淺copy,實際上第二個列表裡的元素,是第一個列表的 引用. 接下來介紹 淺copy有三種方式可以使用 #!/usr/bin/env pyth ...
- LintCode Subarray Sum
For this problem we need to learn a new trick that if your start sum up all elements in an array. Wh ...
- tornado中self.write() 写list
tornado源码中不支持在self.write()中直接传入list对象,源代码如下 def write(self, chunk): if self._finished: raise Runtime ...
- Flex box弹性布局 及 响应式前端设计的优化
Flex box弹性布局 Flex box是CSS3新添加的一种模型属性,它的出现有力的打破了我们常常使用的浮动布局.实现垂直等高.水平均分.按比例划分,可以实现许多我们之前做不到的自适应布局.如果你 ...
- codeforces Magnets
link:http://codeforces.com/contest/344/problem/A 这道题目很简单. 把输入的01 和10 当做整数,如果相邻两个数字相等的话,那么就属于同一组,否则,就 ...
- linux常用工具集合
网络: nm-tool 查看网络状态(有线/无线)