拦截器在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
@Override
public void setSession(Map
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
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">
struts.xml配置了全局了
对拦截器,都是在package中定义,下面action 所需位置上配置
6.见其他两个小页
登录成功页topage.jsp
和show.jsp
-------------------------------------------------------------------------------------------------------------------------------------------------------------
再讲讲验证,就是输入框如果没写东西就提交就出未填用户名的提示类似的
我这里没有用验证框架
在登录页对应的action中在执行方法上面 右键-source-overwrite-validator方法
在生成的方法中写field-validator ,message什么的
然后就是在登录的jsp页中
写一句
若是特定的则