标签:
学沫~~~~
拦截器拦截没登陆过的人进入系统,所以要得到进入过的人的name,用session。
1,在.Java中用session保存用户登录过的信息,这里还有继承一个类ActionSupport,不知道是什么,背下来背下来~
1 package com.chinasofti.strutshuman.struts; 2 3 import java.util.Map; 4 5 import org.apache.struts2.interceptor.SessionAware; 6 7 import com.chinasofti.strutshuman.DAO.InformationDAO; 8 import com.chinasofti.strutshuman.entity.Information; 9 import com.opensymphony.xwork2.ActionSupport; 10 11 @SuppressWarnings("serial") 12 public class Landing extends ActionSupport implements SessionAware{ 13 private Information infor ; 14 private String massage; 15 private Map<String,Object> session; 16 String lervel1="员工"; 17 String lervel2="管理员"; 18 public Information getInfor() { 19 return infor; 20 } 21 public void setInfor(Information infor) { 22 this.infor = infor; 23 } 24 public String getMassage() { 25 return massage; 26 } 27 public void setMassage(String message) { 28 this.massage = message; 29 } 30 31 32 //前面不用管 33 public String execute(){ 34 InformationDAO infordao = new InformationDAO(); 35 Information inf = infordao.getInformationByName(infor.getName()); 36 if(inf!=null){ 37 if(infor.getPassword().equals(inf.getPassword())){ 38 if(infor.getLervel().equals(inf.getLervel())&&inf.getLervel().equals(lervel1)){ 39 //用SESSION保存用户登陆过的信息 40 session.put("OK",infor); 41 //顺便保留下name 42 session.put("name",infor.getName()); 43 massage="欢迎员工登录!"; 44 return "havelervel1"; 45 }else if(infor.getLervel().equals(inf.getLervel())&&inf.getLervel().equals(lervel2)){ 46 session.put("OK",infor); 47 session.put("name",infor.getName()); 48 massage="欢迎管理员登录!"; 49 return "havelervel2"; 50 }else{ 51 massage="你的身份错了!"; 52 return "havelervel3"; 53 } 54 55 }else{ 56 massage="密码错误!请再次登录"; 57 return "havepassword"; 58 } 59 } 60 return massage; 61 } 62 @Override 63 public void setSession(Map<String, Object> session) { 64 // TODO Auto-generated method stub 65 this.session=session; 66 } 67 }
2.创建一个类来验证用户是不是已经登陆过了,这里也要继承一个类 AbstractInterceptor,背吧!
1 package com.chinasofti.strutshuman.struts; 2 3 import java.util.Map; 4 5 import javax.servlet.http.HttpServletRequest; 6 7 import org.aopalliance.intercept.Invocation; 8 import org.apache.struts2.ServletActionContext; 9 10 11 import com.opensymphony.xwork2.ActionInvocation; 12 import com.opensymphony.xwork2.interceptor.AbstractInterceptor; 13 14 public class Landing_Chick extends AbstractInterceptor{ 15 16 @Override 17 public String intercept(ActionInvocation invocation) throws Exception { 18 19 // TODO Auto-generated method stub 20 HttpServletRequest request=ServletActionContext.getRequest(); 21 Map<String,Object> session=invocation.getInvocationContext().getSession(); 22 Object obj=session.get("OK"); 23 if(obj!=null){ 24 //request.setAttribute("message", "欢迎你!"); 25 Object name=session.get("name"); 26 System.out.println(name); 27 request.setAttribute("message",name); 28 return "landing_chick"; 29 } 30 31 request.setAttribute("message", "对不起您还没有登录,请先登录"); 32 return "chinkshibai"; 33 } 34 }
3.重点的是Struts,在Struts里面跳转界面,因为里面太多action 了,下面这两个action都要写,我很喜欢弄错,无语ing~
1 <!-- 拦截器,Struts后面的名字是要验证的类名 --> 2 <interceptors> 3 <interceptor name="login" class="com.chinasofti.strutshuman.struts.Landing_Chick"/> 4 </interceptors> 5 6 7 8 9 <!-- 拦截器的跳转界面,注意登录过和没登陆过跳转到不同的界面 --> 10 <action name="landing_chick" class="com.chinasofti.strutshuman.struts.Landing_Chick_ramp" > 11 <result name="landing_chick_ramp" type="dispatcher">/employees.jsp</result> 12 <result name="chinkshibai" type="dispatcher">/landing_chick.jsp</result> 13 14 <interceptor-ref name="login"></interceptor-ref> 15 <interceptor-ref name="defaultStack"></interceptor-ref> 16 </action>
标签:
原文地址:http://www.cnblogs.com/zh13197490940/p/5588688.html