Structs帮我们在action和http里建立了联系

主要有四种方式 我们主要用第二种(IOC 依赖容器注入 )

Jar包

web.XML

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <welcome-file-list>
  8. <welcome-file>index.jsp</welcome-file>
  9. </welcome-file-list>
  10.  
  11. <filter>
  12. <filter-name>struts2</filter-name>
  13. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  14. </filter>
  15.  
  16. <filter-mapping>
  17. <filter-name>struts2</filter-name>
  18. <url-pattern>/*</url-pattern>
  19. </filter-mapping>
  20. </web-app>

Struct.xml(每次换类名

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5.  
  6. <struts>
  7. <constant name="struts.devMode" value="true" />
  8. <package name="login" extends="struts-default" namespace="/login">
  9. <action name="login*" class="com.bjsxt.struts2.user.action.LoginAction{1}">
  10. <result>/user_login_success.jsp</result>
  11. </action>
  12. </package>
  13. </struts>

拿的时候

index.jsp

  1. <?xml version="1.0" encoding="GB18030" ?>
  2. <%@ page language="java" contentType="text/html; charset=GB18030"
  3. pageEncoding="GB18030"%>
  4.  
  5. <% String context = request.getContextPath(); %>
  6.  
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
  11. <title>Insert title here</title>
  12. </head>
  13. <body>
  14. 取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:
  15. <ol>
  16. <li>前三者:依赖于容器</li>
  17. <li>前三者:IOC</li> (只用这种)
  18. <li>后三者:依赖于容器</li>
  19. <li>后三者:IOC</li>
  20. </ol>
  21. <br />
  22. <form name="f" action="" method="post">
  23. 用户名:<input type="text" name="name"/>
  24. 密码:<input type="text" name="password"/>
  25. <br />
  26. <input type="button" value="submit1" onclick="javascript:document.f.action='login/login1';document.f.submit();" />
  27. <input type="button" value="submit2" onclick="javascript:document.f.action='login/login2';document.f.submit();" />
  28. <input type="button" value="submit3" onclick="javascript:document.f.action='login/login3';document.f.submit();" />
  29. <input type="button" value="submit4" onclick="javascript:document.f.action='login/login4';document.f.submit();" />
  30. </form>
  31.  
  32. </body>
  33. </html>

user_login_success.jsp

  1. <?xml version="1.0" encoding="GB18030" ?>
  2. <%@ page language="java" contentType="text/html; charset=GB18030"
  3. pageEncoding="GB18030"%>
  4. <%@taglib uri="/struts-tags" prefix="s" %>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
  9. <title>Insert title here</title>
  10. </head>
  11. <body>
  12. User Login Success!
  13. <br />
  14. <s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br />
  15. <s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br />
  16. <s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br />
  17. <s:property value="#attr.a1"/><br /> //不常用 无法精确的知道到底存在哪里 他是吧request application session 的全部存在里面
  18. <s:property value="#attr.s1"/><br />
  19. <s:property value="#attr.r1"/><br />
  20. <s:debug></s:debug>
  21. <br />
  22. </body>
  23. </html>

先介绍第一种‘

LoginAction1

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import com.opensymphony.xwork2.ActionContext;
  6. import com.opensymphony.xwork2.ActionSupport;
  7.  
  8. public class LoginAction1 extends ActionSupport {
  9.  
  10. private Map request;
  11. private Map session;
  12. private Map application;
  13.  
  14. public LoginAction1() {
  15. request = (Map)ActionContext.getContext().get("request");
  16. session = ActionContext.getContext().getSession();
  17. application = ActionContext.getContext().getApplication();
  18. }
  19.  
  20. public String execute() {
  21. request.put("r1", "r1");
  22. session.put("s1", "s1");
  23. application.put("a1", "a1");
  24. return SUCCESS;
  25. }
  26.  
  27. }

第二种: IOC控制反转 依赖于容器

LoginAction2

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.apache.struts2.interceptor.ApplicationAware;
  6. import org.apache.struts2.interceptor.RequestAware;
  7. import org.apache.struts2.interceptor.SessionAware;
  8.  
  9. import com.opensymphony.xwork2.ActionContext;
  10. import com.opensymphony.xwork2.ActionSupport;
  11.  
  12. public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {
  13.  
  14. private Map<String, Object> request;
  15. private Map<String, Object> session;
  16. private Map<String, Object> application;
  17.  
  18. //DI dependency injection
  19. //IoC inverse of control
  20. public String execute() {
  21. request.put("r1", "r1");
  22. session.put("s1", "s1");
  23. application.put("a1", "a1");
  24. return SUCCESS;
  25. }
  26.  
  27. @Override
  28. public void setRequest(Map<String, Object> request) {
  29. this.request = request;
  30. }
  31.  
  32. @Override
  33. public void setSession(Map<String, Object> session) {
  34. this.session = session;
  35. }
  36.  
  37. @Override
  38. public void setApplication(Map<String, Object> application) {
  39. this.application = application;
  40. }
  41.  
  42. }

第三种

LoginAction3

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import javax.servlet.ServletContext;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpSession;
  6.  
  7. import org.apache.struts2.ServletActionContext;
  8.  
  9. import com.opensymphony.xwork2.ActionSupport;
  10.  
  11. public class LoginAction3 extends ActionSupport {
  12.  
  13. private HttpServletRequest request;
  14. private HttpSession session;
  15. private ServletContext application;
  16.  
  17. public LoginAction3() {
  18. request = ServletActionContext.getRequest();
  19. session = request.getSession();
  20. application = session.getServletContext();
  21. }
  22.  
  23. public String execute() {
  24. request.setAttribute("r1", "r1");
  25. session.setAttribute("s1", "s1");
  26. application.setAttribute("a1", "a1");
  27. return SUCCESS;
  28. }
  29.  
  30. }

第四种 IOC

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import javax.servlet.ServletContext;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpSession;
  6.  
  7. import org.apache.struts2.interceptor.ServletRequestAware;
  8.  
  9. import com.opensymphony.xwork2.ActionSupport;
  10.  
  11. public class LoginAction4 extends ActionSupport implements ServletRequestAware {
  12.  
  13. private HttpServletRequest request;
  14. private HttpSession session;
  15. private ServletContext application;
  16.  
  17. public String execute() {
  18. request.setAttribute("r1", "r1");
  19. session.setAttribute("s1", "s1");
  20. application.setAttribute("a1", "a1");
  21. return SUCCESS;
  22. }
  23.  
  24. @Override
  25. public void setServletRequest(HttpServletRequest request) {
  26. this.request = request;
  27. this.session = request.getSession();
  28. this.application = session.getServletContext();
  29. }
  30.  
  31. }

LoginAction4

Structs复习 访问web元素的更多相关文章

  1. Struts2 访问web元素

    访问web元素的四种方法(耦合,依赖注入).(耦合,非依赖注入).(非耦合,依赖注入).(非耦合,非依赖注入) 耦合:可以得到HttpServletResponse,HttpServletReques ...

  2. Struts2学习---简单的数据校验、访问Web元素

    1.简单的数据校验 在action里面我们已经给出了一个数据校验: public String execute() { if(user.getUsername().equals("usern ...

  3. Struts2中访问web元素的四种方式

    Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...

  4. 01_12_Struts2_访问Web元素

    01_12_Struts2_访问Web元素 1. 配置struts.xml文件 <package name="login" namespace="/login&qu ...

  5. struts2 访问Web元素的4种方法

    完整代码 :Struts12AccessWebElement.rar 第一种也是最常用的一种方法实现这几个接口 RequestAware,SessionAware,ApplicationAware s ...

  6. sessionapplicationStruts2中访问web元素

    本文是一篇关于sessionapplication的帖子 取得Map类型request,session,application,实在类型 HttpServletRequest, HttpSession ...

  7. Struts2访问web元素的各种方法

    1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...

  8. Struts2 学习笔记 09 访问Web元素

    我们想要访问Map类型request,session,application.真实类型HttpServletRequest,HttpSession,ServletContext的引用,并对它们进行操作 ...

  9. Struts2_访问Web元素

    取得Map 类型的 request,session,application, HttpServletRequest,HttpSession,ServletContext的引用. 分访问 Map 类型和 ...

随机推荐

  1. make install 时指定安装路径

    The  make install target dir is representationed by var :  DESTDIR, if we set this var to the locati ...

  2. 关于chrome控制台警告:Synchronous XMLHttpRequest on the main thread

    Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to th ...

  3. 从入门到熟悉 HTTPS 的 9 个问题

    九个问题从入门到熟悉HTTPS 最近一边做毕设一边学习编程.前两天她问我 HTTPS 的问题,本来想直接扔一篇网上的教程给她.后来想了一下,那些文章大多直接介绍概念, 对新手不太友好,于是我干脆亲自给 ...

  4. 500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

    出错原因:用户没有变更根目录的权限. ftp用户默认的根目录是/home/ftp,如果要切换登陆目录,需要给予权限 解决方法: 第一步, 打开/etc/vsftpd/vsftpd.conf,做如下配置 ...

  5. 【转】Exchange Server 的防火墙开放端口

    关于exchange所用到的端口参阅下面的文档, 适用于exchange2010sp2. http://technet.microsoft.com/en-us/library/bb331973.asp ...

  6. mysql 外键引发的删除失败

    mysql> TRUNCATE TABLE role ; ERROR 1701 (42000): Cannot truncate a table referenced in a foreign ...

  7. Image.Url 无法使用 Server.MapPath(使用后无论如何也不显示)

    Image.Url 无法使用 Server.MapPath(使用后无论如何也不显示)

  8. django管理后台添加admin账号

    直接用命令行添加即可:python manage.py createsuperuser # python manage.py createsuperuser Username (leave blank ...

  9. beego orm操蛋问题:操作都需要主键

    查看bee generate appcode自动生成的代码,会发现orm操作都是以主键为依据的. 如果我不想根据主键怎么操作?用 ORM.Raw(cmd).Exec()吧,cmd=[你的mysql语句 ...

  10. ubuntu防火墙命令初探

    1.防火墙的状态与开关 1)$sudo ufw status  //查看防火墙的状态及当前的设置规则 2)$sudo ufw enable //开启防火墙 3)$sudo ufw disable // ...