拦截器+验证
来源:互联网 发布:如何构建大数据平台 编辑:程序博客网 时间:2024/05/22 07:06
拦截器在struts.xml中配置了默认拦截器就不走了,所以要在<action name=....class=..>下写一句<intercepter-ref name="defaultStack"/>
想写一个拦截器实现
通过访问showaction的show.jsp 但是只有登录过了的访问才能到show.jsp 否则显示登录页面要求登录
1. 我用的是域模型:建了一个java类Employ里面对应登录页的两个属性user,password对应getset方法
2.在src下建loginAction类继承actionsupport类,实现sessionaware接口(产生session),在其中产生Employ emp;产生她的setget方法
在对sessionaware 实现的方法中做动作并在此类中对session进行声明,此session是map类的,在执行方法中进行验证成功则存入session对象中,以便拦截器看有对应session值的就不拦截,否则拦截!
public class loginAction extends ActionSupport implements SessionAware{
private Employ emp;
private Map<String,Object> session;
@Override
public void setSession(Map<String, Object> arg0) {
this.session=arg0;
}
public Employ getEmp() {
return emp;
}
public void setEmp(Employ emp) {
this.emp = emp;
}
// @Override
// public void validate() {
// if(emp.getUser()==null||("").equals(emp.getUser()))
// {
// this.addFieldError("name", "请输入用户名");
// }
// if(emp.getPassword()==null||("").equals(emp.getPassword())){
// this.addFieldError("password", "请输入密码");
// }
// }
public String dologin()
{
if(emp.getUser().equals("zhangsan")&&(emp.getPassword()).equals("123"))
{
session.put("name",emp);
}
return "success";
}
}
3.建登录页导入<%taglib prefix="s" uri="/struts-tags">
<s:form action="loginAction" method="post">
<s:textfield name="emp.user" label="用户名"></s:textfield>
<s:fielderror fieldName="name"></s:fielderror>
<s:password name="emp.password" label="密码">
</s:password><s:fielderror fieldName="password"></s:fielderror>
<s:submit key="submit" value="提交"></s:submit>
</s:form>
4.在src下建intercepor的class文件 建议在建的时候就继承abstractInteruptor 在生成的方法中通过Context得到session,通过session验证里面有没有存值,若有则放行,否则拦截,,我这里是在struts.xml中定义了全局变量input,拦截直接去登录页
public class myinterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
@Override
public String intercept(ActionInvocation arg0) throws Exception {
Map<String,Object> session=arg0.getInvocationContext().getSession();
if(session!=null&&session.get("name")!=null )
{
return arg0.invoke();
}
return "input";
}
}
5.配置struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="mypackage" extends="struts-default" >
<interceptors>
<interceptor name="myinterceptor" class="com.struts.interceptor.myinterceptor">
</interceptor>
</interceptors>
<global-results>
<result name="success">/token/topage.jsp</result>
<result name="input">/token/login.jsp</result>
</global-results>
<action name="loginAction" class="com.struts.action.loginAction" method="dologin">
</action>
<action name="showAction" class="com.struts.action.showAction" method="execute">
<interceptor-ref name="myinterceptor"></interceptor-ref>
<result name="show">/token/show.jsp</result>
</action>
</package>
</struts>
struts.xml配置了全局了<global-result>的,下面的配置action中涉及<global-result>的直接不用写,并且在action的具体代码中都可用到这些result的name实现跳转
对拦截器,都是在package中定义,下面action 所需位置上配置
6.见其他两个小页
登录成功页topage.jsp
和show.jsp
-------------------------------------------------------------------------------------------------------------------------------------------------------------
再讲讲验证,就是输入框如果没写东西就提交就出未填用户名的提示类似的
我这里没有用验证框架
在登录页对应的action中在执行方法上面 右键-source-overwrite-validator方法
在生成的方法中写field-validator ,message什么的
然后就是在登录的jsp页中
写一句<s:fielderror></s:fielderror>
若是特定的则<s:fielderror fieldName="password"></s:fielderror>
- 登录验证--拦截器
- day29_struts2验证&拦截器
- 拦截器+验证
- springmvc拦截器验证
- struts2 拦截器 登录验证
- 拦截器实现用户权限验证
- Struts2拦截器登录验证
- Struts2拦截器登录验证
- Struts2拦截器登录验证
- 权限拦截器 用户信息验证
- Struts2的拦截器、自定义拦截器、Struts2 验证机制
- Struts2拦截器—自定义拦截器验证用户登录
- Spring mvc拦截器实现登录验证拦截
- SpringMVC拦截器实现登陆时的验证拦截
- Struts2的拦截器&验证器
- struts2例程--加了验证拦截器
- SSH2 拦截器 登录验证 三步走
- 拦截器对session验证的实现
- cp: omitting directory错误
- ThinkPHP的使用(七)验证码的使用,及Ajax验证
- 【第332周开发版7.5.4】红米NOTE3 全网通 高通骁龙650 基于安卓M(Android 6.0) MIUI8 修改精简优化版本
- PHP API中,MYSQL与MYSQLI的持久连接区别
- pc_lint的用法【转】
- 拦截器+验证
- nginx的权限问题(13: Permission denied)解决办法
- Linux 文件目录的创建、删除和查看
- React Native scrollview滚动事件
- 【BZOJ 2179】 FFT快速傅立叶
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- openlayers加载静态图片的地图
- 学习记录
- UML建模——状态图