拦截器+验证

拦截器在struts.xml中配置了默认拦截器就不走了,所以要在下写一句

想写一个拦截器实现

通过访问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 session;
@Override
public void setSession(Map 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">

 
       
       
       
       

         
   

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 session=arg0.getInvocationContext().getSession();
  if(session!=null&&session.get("name")!=null )
  {
 
  return arg0.invoke();
  }
     return "input";
}


}

   

5.配置struts.xml


    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
 
   
     
     
 

 
 

 
      /token/topage.jsp
      /token/login.jsp
 

     
     
   
      
      
   

   
     
    /token/show.jsp
   

    

 

struts.xml配置了全局了的,下面的配置action中涉及的直接不用写,并且在action的具体代码中都可用到这些result的name实现跳转

对拦截器,都是在package中定义,下面action 所需位置上配置

6.见其他两个小页

登录成功页topage.jsp

和show.jsp




-------------------------------------------------------------------------------------------------------------------------------------------------------------

再讲讲验证,就是输入框如果没写东西就提交就出未填用户名的提示类似的

我这里没有用验证框架

在登录页对应的action中在执行方法上面 右键-source-overwrite-validator方法

在生成的方法中写field-validator ,message什么的


然后就是在登录的jsp页中



写一句

若是特定的则



你可能感兴趣的:(javaweb,struts2)