JavaEE 之 后台验证+拦截器
1.Validator后台验证
a.在web.xml中配置
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/mySpring-*.xml
</param-value>
</context-param>
<servlet>
<servlet-name>myValidator</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/mySpring-*.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myValidator</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
b.在mySpring-servlet.xml中配置
<!-- 启动注解驱动 -->
<mvc:annotation-driven validator="validator"/>
<!--启用自动扫描 -->
<context:component-scan base-package="com.wode.controller" /> <bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean ">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
</bean>
c.Controller中
@RequestMapping(path="login",method=RequestMethod.POST)
public ModelAndView login(@Valid UserBean user,BindingResult br){
ModelAndView mod = new ModelAndView();
if(br.hasErrors()){
mod.setViewName("login");
return mod;
}else{
mod.setViewName("main");
mod.addObject("userName",user.getUserName());
return mod;
} }
d.在Bean中
@NotEmpty(message = "不能为空")
@Length(max=16, min=8, message= "账户必须是8-16位")
private String userName; @NotEmpty(message = "不能为空")
private String userPwd;
e.在html中
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags/form" %>
<spring:form action="login.do" method="post" commandName="userBean">
用户名:<input type="text" name="userName"><spring:errors delimiter="," path="userName"></spring:errors><br/>
密码:<input type="password" name="userPwd"><spring:errors delimiter="," path="userPwd"></spring:errors><br/>
<input type="submit">
</spring:form>
2.Interceptors拦截器
a.在mySpring-servlet.xml中配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*"/>
<mvc:exclude-mapping path="/login.do"/>
<bean class="com.wode.util.MyInterceptor" id="MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
b.建拦截器类
①方法一:继承HandlerInterceptorAdapter类
public class MyInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
boolean flag = false;
HttpSession session = request.getSession();
if(session.getAttribute("user") != null){
flag=true;
}else{
response.sendRedirect("login.jsp");
}
return flag;
}
}
②方法一:实现HandlerInterceptor接口
public class MyInterceptor2 implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
System.out.println("方法执行之后视图生成之前拦截");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
System.out.println("方法执行之后拦截");
}
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
// TODO Auto-generated method stub
System.out.println("方法执行之前拦截");
//ture--接着执行 false 停止执行
//session 中如果没有用户信息 就重定向到登录页面
return true;
}
}
JavaEE 之 后台验证+拦截器的更多相关文章
- Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码
本问主要介绍asp.net的身份验证机制及asp.net MVC拦截器在项目中的运用.现在让我们来模拟一个简单的流程:用户登录>权限验证>异常处理 1.用户登录 验证用户是否登录成功步骤直 ...
- SpringMVC拦截器(实现登录验证拦截器)
本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ ...
- spring登录验证拦截器和根据用户角色登录
大家都知道spring的用户登录拦截器,确实省去了程序员不少的精力,下面说说我在项目中使用的感受. 德安微信管理后台是管理多个微信帐号的平台,登录到平台的用户有三个角色,游客和微信帐号管理员.超级管理 ...
- struts2学习(6)自定义拦截器-登录验证拦截器
需求:对登录进行验证,用户名cy 密码123456才能登录进去: 登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...
- JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现
一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implemen ...
- Axios Token验证拦截器
import axios from 'axios'; // req拦截 axios.interceptors.request.use( //设置头部的token config.headers['tok ...
- JavaEE权限管理系统的搭建(六)--------使用拦截器实现菜单URL的跳转权限验证和页面的三级菜单权限按钮显示
本小结讲解,点击菜单进行页面跳转,看下图,点击管理员列表后会被认证拦截器首先拦截,验证用户是否登录,如果登录就放行,紧接着会被权限验证拦截器再次拦截,拦截的时候,会根据URL地址上找到对应的方法,然后 ...
- 基于SSH2框架Struts2拦截器的登录验证实现(转)
大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证. 修改数 ...
- Struts2学习笔记四:深入拦截器
一:拦截器的工作原理 拦截器的执行过程可以类比filter过滤器,ActionInvocation实例执行过程中,先执行action实例上引用的拦截器们,然后才执行action实例处理请求,返回res ...
随机推荐
- Django Cookie,Session
Cookie Cookie的由来 HTTP协议是无状态的,每次请求都是独立的,对服务器来说,每次的请求都是全新的,上一次的访问是数 据是无法保留到下一次的 某些场景需要状态数据或者中间数据等相关对下一 ...
- Java【第二篇】基本语法之--进制、运算符
进制 对于整数,有四种表示方式: 二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头. 十进制:0-9 ,满 10 进 1. 八进制:0-7 ,满 8 进1. 以数字 0 开头表示. 十六进制 ...
- LoadRunner【第五篇】关联
关联的定义及使用场景 关联:将服务器提供动态变化的值存放在变量中,当需要使用该变量时,由LoadRunner自动从服务器响应的信息中获取该值,并在后面使用的过程中进行替换.(也可能是前端页面动态生成的 ...
- 为什么会有这么多python?其实python并不是编程语言!
Python是出类拔萃的 然而,这是一句非常模棱两可的话.这里的"Python"到底指的是什么? 是Python的抽象接口吗?是Python的通用实现CPython吗(不要把CPy ...
- 10分钟快速搞定pandas
本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook .习惯 ...
- Pycharm中Django安装配置Mongodb
一.安装mongo plugs插件 File->Setting Plugins查询Mongo选择Search in repositories 选择Mongo plugins,选择install ...
- 类型和原生函数及类型转换(三:终结js类型转换)
Number() parseInt() parseFloat() Boolean() String() toString() 一.显式类型转换 -------Number()函数把对象的值转换为数字. ...
- VS2012/2013/2015/Visual Studio 2017 关闭单击文件进行预览的功能
Visual Studio在2010版本后推出了点击项目管理器预览文件的功能,但是对于配置不咋地的旧电脑总是觉得有点卡,下面是解决方案. 英文版方法:Tools->Options->Env ...
- [物理学与PDEs]第1章第2节 预备知识 2.3 Faraday 电磁感应定律
1. Faraday 电磁感应定律: 设 $l$ 为任一闭曲线, 则 $$\bex \oint_l{\bf E}\cdot\rd {\bf l} =-\int_S \cfrac{\p {\bf B} ...
- golang slice分割和append copy还是引用
转载自:http://studygolang.com/articles/724 1. slice1:= slice[0:2] 引用,非复制,所以任何对slice1或slice的修改都会影响对方 dat ...