Struts中request,session和application方法访问web元素

最近听了马士兵老师的一个视频,讲的struts访问web元素

1:jsp页面 accessWeb.jsp

<body>
      取得Map类型的request,response,application,真实类型的HttpServletRequest,HttpServletResponse,ServletContext的引用:
   <ol>
         <li>前三者:依赖于容器</li>
         <li>前三者:IOC</li>
         <li>后三者:依赖于容器</li>
         <li>后三者:IOC</li>
   </ol>
   <br/>
   <form name="f" action="" method="post">
              用户名:<input type="text" name="name"/>
              密码:<input type="text" name="password"/>
     <br/>
     <input type="button" value="submit1" onclick="javascript:document.f.action='login/login1';document.f.submit();"/>
     <input type="button" value="submit2" onclick="javascript:document.f.action='login/login2';document.f.submit();"/>
     <input type="button" value="submit3" onclick="javascript:document.f.action='login/login3';document.f.submit();"/>
     <input type="button" value="submit4" onclick="javascript:document.f.action='login/login4';document.f.submit();"/>
   </form>
  </body>

 

2:struts.xml配置

<package name="login" extends="struts-default" namespace="/login">
          
       <action name="login*" class="com.capinfotech.web.action.LoginAction{1}">
           <result name="success">/user_login_success.jsp</result>
       </action>
      
   </package>

 

3:LoginAction的内容

 LoginAction1.java:

public class LoginAction1 extends ActionSupport{
 
 private static final long serialVersionUID = 7964423947654287569L;
 
 private Map request;
 private Map session;
 private Map application;
 
 public LoginAction1() {
  request = (Map)ActionContext.getContext().get("request");
  session = ActionContext.getContext().getSession();
  application = ActionContext.getContext().getApplication();
 }
 
 public String execute() {
  request.put("r1", "r1");
  session.put("s1", "s1");
  application.put("a1", "a1");
  return SUCCESS;
 }
}

 

LoginAction2.java:

public class LoginAction2 extends ActionSupport implements RequestAware, SessionAware, ApplicationAware{

 private static final long serialVersionUID = 6409381047458882347L;
 
 private Map<String, Object> request;
 private Map<String, Object> session;
 private Map<String, Object> application;
 
 //DI dependency injection
 //IOC(inverse of control)
 public void setRequest(Map<String, Object> request) {
  this.request = request;
 }

 public void setSession(Map<String, Object> session) {
  this.session = session;
 }
 
 public void setApplication(Map<String, Object> application) {
  this.application = application;
 }
 
 public String execute() {
  request.put("r1", "r1");
  session.put("s1", "s1");
  application.put("a1", "a1");
  return SUCCESS;
 }
}

 

LoginAction3.java:

public class LoginAction3 extends ActionSupport{

 private static final long serialVersionUID = -1849003438117251182L;
 
 private HttpServletRequest request;
 private HttpSession session;
 private ServletContext application;
 
 public LoginAction3() {
  request = ServletActionContext.getRequest();
  session = request.getSession();
  application = session.getServletContext();
 }
 
 public String execute() {
  request.setAttribute("r1", "r1");
  session.setAttribute("s1", "s1");
  application.setAttribute("a1", "a1");
  return SUCCESS;
 }

}

 

LoginAction4.java:

public class LoginAction4 extends ActionSupport implements ServletRequestAware{

 private static final long serialVersionUID = -9142255841666204739L;
 
 private HttpServletRequest request;
 private HttpSession session;
 private ServletContext application;
 
 public String execute() {
  request.setAttribute("r1", "r1");
  session.setAttribute("s1", "s1");
  application.setAttribute("a1", "a1");
  return SUCCESS;
 }

 public void setServletRequest(HttpServletRequest request) {
  this.request = request;
  this.session = request.getSession();
  this.application = session.getServletContext();
 }

}

 

4: user_login_success.jsp

<body>
    User Login Success!
    <br/>
    <s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br/>
    <s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br/>
    <s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br/>
    <s:property value="#attr.a1"/><br/>
    <s:property value="#attr.s1"/><br/>
    <s:property value="#attr.r1"/><br/>
    <s:debug />
  </body>

 

5: 程序显示的结果

User Login Success!
r1 | r1
s1 | s1
a1 | a1
a1
s1
r1

6:总结

最常用的是第二种,即LoginAction2.java的内容,实现了相应的接口,当程序运行时,如果发现该类实现了这几个接口,如RequestAware接口,那么系统会直接把此时的request注入,有Spring的DI和IOC思想

 

你可能感兴趣的:(JavaScript,Web,session,struts,application,login)