(六)Struts2访问web元素
来源:互联网 发布:淘宝销量排行榜 编辑:程序博客网 时间:2024/06/05 11:17
首要的目的是获取到request,session,application. HttpServletRequest,HttpServletSession,ServletContext的引用.
取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:
公用代码如下:
UI界面index.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %><html> <body> This is my login page. <br> <br> 取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用: <br/> <form action="" name="loginForm" id="loginFormId" method="post"> 用户名:<input type="text" name="name" id="nameId" /> 密 码:<input type="password" name="pwd" id="pwdId" /><br/> <input type="button" value="submit1" onclick="javascript:document.loginForm.action='login/login1';document.loginForm.submit();" /> <input type="button" value="submit2" onclick="javascript:document.loginForm.action='login/login2';document.loginForm.submit();" /> <input type="button" value="submit3" onclick="javascript:document.loginForm.action='login/login3';document.loginForm.submit();" /> <input type="button" value="submit4" onclick="javascript:document.loginForm.action='login/login4';document.loginForm.submit();" /> </form> </body></html>
UI界面跳转的页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> Successful~~~~! <br> s:property是用标签访问ActionContext中的值,也就是StackContext.<br/> Stack Context--->These items are available using the #key notation!<br/> 所以可以使用Struts标签,来像下面代码那样直接获取值.<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.r1" /><br> <s:property value="#attr.s1" /><br> <s:property value="#attr.a1" /><br> attr这个属性用的很少,因为不确定性,你该明白你把你的数据放在什么地方了.<br/> 如果request和session都有值的name,获取会获取第一个,由此出现问题. <s:debug></s:debug> </body></html>
struts.xml配置文件:
<package name="login" namespace="/login" extends="struts-default"> <action name="login*" class="org.credo.action.LoginAction{1}"> <result>/login/success.jsp</result> </action></package>
(一)最常用的方法:
package org.credo.action;import java.util.Map;import org.apache.struts2.interceptor.ApplicationAware;import org.apache.struts2.interceptor.RequestAware;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionSupport;/** * 依赖注入DI/控制反转IOC,本例是最常用的方法!!!!! */public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{private static final long serialVersionUID = 1L;private Map<String,Object> request;private Map<String,Object> session;private Map<String,Object> application;//依赖注入(DI),request依赖于容器(Struts2)调用RequestAwre方法注入数据.//控制反转 (IOC),把自己做的事情交给了别人去做.public String execute(){request.put("r1", "r1");session.put("s1", "s1");application.put("a1", "a1");return SUCCESS;}@Overridepublic void setApplication(Map<String, Object> application) {this.application= application;}@Overridepublic void setSession(Map<String, Object> session) {this.session=session;}@Overridepublic void setRequest(Map<String, Object> request) {this.request=request;}}
(二)方法2:
package org.credo.action;import java.util.Map;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;//这种方法依赖于Struts2,依赖于容器.@SuppressWarnings("rawtypes")public class LoginAction1 extends ActionSupport{/** * 首要的目的是获取到request,session,application. HttpServletRequest,HttpServletSession,ServletContext的引用. * public class ActionContext implements Serializable { *static ThreadLocal actionContext = new ThreadLocal(); *如山是ActionContext的实现,是一个实现了序列化的本地线程.也就是说Context是整个线程中的运行环境. */private static final long serialVersionUID = 1L;private Map request;private Map session;private Map application;//ActionContext就是<s:debug>显示的StackContext.//ActionContextpublic LoginAction1(){//ActionContext.getContext()不是一个单例.是一个本地线程,ThreadLocal,但是在这个线程里他是单例.request=(Map) ActionContext.getContext().get("request");session=ActionContext.getContext().getSession();application=ActionContext.getContext().getApplication();//request,session,application在页面中访问的是HttpServletRequest,HttpServletSession,ServletContext}// 后台MAP形式的request,session,application, //而前台的HttpServletRequest,HttpServletSession,ServletContext是Struts2把后台数据都填充到其中.@SuppressWarnings("unchecked")public String execute(){request.put("r1", "r1");session.put("s1", "s1");application.put("a1", "a1");return SUCCESS;}}
(三)方法3:
package org.credo.action;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;//固定写法,基本不用.public class LoginAction3 extends ActionSupport{/** * */private static final long serialVersionUID = 1L;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;}}
(四)方法4:
package org.credo.action;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.interceptor.ServletRequestAware;import com.opensymphony.xwork2.ActionSupport;public class LoginAction4 extends ActionSupport implements ServletRequestAware{/** * 这个也是IOC的,但是实现的是ServletRequestAware接口.也不常用. */private static final long serialVersionUID = 1L;private HttpServletRequest request;private HttpSession session;private ServletContext application;@Overridepublic void setServletRequest(HttpServletRequest request) {this.request= request;this.session=request.getSession();this.application=session.getServletContext();}public String execute(){request.setAttribute("r1", "r1");session.setAttribute("s1", "s1");application.setAttribute("a1", "a1");return SUCCESS;}}
- (六)Struts2访问web元素
- struts2访问web元素
- Struts2访问 web 元素
- Struts2访问Web元素
- struts2访问web元素
- struts2访问web元素
- Struts2访问Web元素
- struts2访问web元素
- Struts2访问web元素
- Struts2访问web元素
- Struts2----访问Web元素
- struts2 访问web元素
- struts2访问WEB元素
- struts2访问web元素
- Struts2 访问web元素
- struts2访问web元素
- Struts2 访问web元素
- struts2访问web元素
- Ouath 验证过程
- reportserver
- 给MFC程序添加文件拖放处理
- HTTP 1.1状态代码及其含义
- mysql 日志
- (六)Struts2访问web元素
- 各种方法......to be continued
- XSLT 中使用参数和变量以及 C# 向 XSLT 传入参数
- 2012/3/27
- java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilte
- VC中字符串取子串总结
- 使用log4j输出日志
- spring 学习1——理解IOC
- phoneview