`
weigang.gao
  • 浏览: 491733 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

访问Web元素(6)

 
阅读更多

1.访问Map类的request,session,application

第一种方式:依赖于Struts

a.编写action

package com.bjsxt.struts2.user.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction1 extends ActionSupport {
        //取得Map类型的request,session,application
	private Map request;
	private Map session;
	private Map application;
	
	public LoginAction1() {
                /*ActionContext.getContext()获取action执行环境,这个环境中有Map类型的request,session,aplication
                 *problem1:ActionContext是单例吗?不是,每个请求都会生成一个ActionContext,request对象不可能所有的用户都使用同一个
                 *problem2:Map类型的request,session,application与HttpServletRequest,HtppSession,ServletContext是一样吗? Map类型的request中内容会copy到HttpServletRequest对象当中去,因此在页面当中也可以使用
                 */
		request = (Map)ActionContext.getContext().get("request");//与Stack Context中的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; 
	}	
}

b.在页面当中访问Map类型的request,session,application

<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
    <%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
	User Login Success!
	<br />
        使用OGNL表达式访问Map类型的request|使用原始的方式访问HttpServletRequest中的内容
        <!--获取Stack Context中的request中的内容-->
	<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:debug></s:debug><!--查看Value stack contents与Stack Context中的内容-->
	<br />
</body>
</html>

第二种方式(最常用):使用DI(依赖注入)方式获得Map类型Request,session,application

package com.bjsxt.struts2.user.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.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

//需要实现 RequestAware,SessionAware, ApplicationAware接口
public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {
	
	private Map<String, Object> request;
	private Map<String, Object> session;
	private Map<String, Object> application;
	
	//DI dependency injection
	//IoC inverse of control
	public String execute() {
		request.put("r1", "r1");
		session.put("s1", "s1");
		application.put("a1", "a1");
		return SUCCESS; 
	}

	@Override
	public void setRequest(Map<String, Object> request) {
		this.request = request;
	}

	@Override
	public void setSession(Map<String, Object> session) {
		this.session = session;
	}

	@Override
	public void setApplication(Map<String, Object> application) {
		this.application = application;
	}
	
}
 

2.取得真实类型 HttpServletRequest, HttpSession, ServletContext的引用 

第一种方式:依赖于Struts

package com.bjsxt.struts2.user.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 HttpServletRequest request;
	private HttpSession session;
	private ServletContext application;
	
	public LoginAction3() {
		request = ServletActionContext.getRequest();//原始类型的request
		session = request.getSession();
		application = session.getServletContext();
	}
	
	public String execute() {
		request.setAttribute("r1", "r1");
		session.setAttribute("s1", "s1");
		application.setAttribute("a1", "a1");
		return SUCCESS; 
	}
	
}

 第二种方式:使用DI(依赖注入)的方式

package com.bjsxt.struts2.user.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;
//需要实现ServletRequestAware接口
public class LoginAction4 extends ActionSupport implements ServletRequestAware {
	
	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; 
	}


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

 

分享到:
评论

相关推荐

    struts2访问Web元素

    在“struts2访问Web元素”这个主题中,我们主要关注的是如何通过Struts2框架来操作和控制Web页面上的各种元素。这篇博文可能详细介绍了如何在Struts2中与HTML表单、按钮、文本框等交互,以及如何处理用户提交的数据...

    Struts2_访问web元素_accessWebElements_s

    在Struts2框架中,访问web元素是开发过程中不可或缺的部分,这涉及到与用户界面交互、数据传递以及控制流程的管理。在这个主题“Struts2_访问web元素_accessWebElements_s”中,我们将深入探讨如何在Struts2中有效地...

    Struts2访问Web元素

    在"Struts2访问Web元素"这个主题中,我们将深入探讨如何在Struts2框架中与网页元素进行交互。 首先,我们需要了解Struts2的核心组件——Action类。Action类是业务逻辑的载体,负责处理用户请求,并返回相应的结果。...

    struts2 访问web元素

    在"Struts2 访问web元素"这个主题中,我们主要探讨的是如何在Struts2框架中与HTML表单、按钮、文本框等web元素进行交互。这涉及到Action类、Result类型以及Struts2提供的强大数据绑定机制。 1. **Action类**:在...

    Struts2中访问web元素的例子

    在Struts2中,访问web元素是开发过程中常见的需求,比如获取请求参数、session数据或者cookie等。本篇文章将详细介绍Struts2中四种访问web元素的方法。 1. **Action上下文(ActionContext)** ActionContext是...

    web.xml元素详解

    `security-constraint`元素用于定义安全约束,包括对URL的访问控制策略,配合`login-config`元素使用,确保Web应用的安全性。 #### 19. Login-Config `login-config`元素用于配置身份验证机制,如表单认证、基本...

    myeclipse的WebRoot下的jsp访问不了

    ### MyEclipse中WebRoot下的JSP访问问题详解 #### 一、问题概述 在使用MyEclipse开发Java Web应用程序时,可能会遇到一种情况:放置在项目目录下的JSP文件可以正常访问,但如果将这些JSP文件放置在项目的WebRoot...

    常用web开发元素4

    在Web开发领域,熟悉并掌握常用的开发元素是至关重要的。这些元素构成了网页的基础,并且是HTML、JavaScript、CSS以及服务器端技术如Java和JSP的核心组成部分。以下将详细阐述这些关键知识点。 首先,HTML...

    vue-web-component-wrapper:将Vue组件包装为Web组件自定义元素

    @ vue / web-component-wrapper 包装并将Vue组件注册为自定义元素。兼容性。 不支持IE11及以下版本。 如果定位本机支持ES2015但不支持本机Web组件的浏览器: 您还将需要 。 有关和支持,请访问caniuse.com。 使用...

    JSP页面中限制对Web资源的访问

    ### JSP 页面中限制对 Web 资源的访问 在现代 Web 开发中,安全性是至关重要的一个方面。为了确保系统的安全性和数据的保护,开发者必须实施有效的访问控制策略。其中一种常见的做法是在 Java Server Pages (JSP) ...

    常用web开发元素6

    以下将详细讲解与标题"常用web开发元素6"相关的知识点,结合描述中的"对Web开发人员很实用",我们将探讨HTML、Web、Java和JSP等相关技术。 1. HTML (超文本标记语言): HTML是Web开发的基础,用于定义网页的结构和...

    Web Services3个元素的详解

    Web Services的核心组件主要包括三个关键元素:SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI(统一描述、发现和集成)。 1. SOAP(Simple Object Access Protocol) SOAP是一种轻量级的、基于XML的...

    Tomcat中用web.xml控制Web应用详解

    下面对 web.xml 文件中的重要元素进行详细解释。 context-param 元素 context-param 元素用于声明应用范围内的初始化参数。这些参数可以被 ServletContext 中的所有组件共享。容器将 context-param 转换为键值对,...

    web访问摄像头

    6. **权限管理**:浏览器会要求用户授权网页访问他们的摄像头,确保了用户的隐私安全。因此,处理好权限提示和用户交互是非常重要的。 7. **兼容性处理**:不同的浏览器对这些API的支持程度不一,开发者需要确保...

    web.xml配置详解, web.xml web.xml 配置实例

    * session-config 元素:如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。 * mime-mapping 元素:如果 Web 应用具有想到特殊的文件,希望能保证给他们分配特定的 MIME 类型。 * welcome-file-list ...

    DWR3 访问WEB元素的两种方法实例详解

    在DWR3中,访问WEB元素主要有两种方法,这两种方法都能有效地帮助开发者在客户端与服务器之间传递和操作Web元素。 ### 方法一:类似SpringMVC的用法 这种用法借鉴了SpringMVC的风格,通过在远程调用的方法中声明...

    web.xml元素介绍

    - `&lt;servlet-mapping&gt;`元素将Servlet与URL模式关联,定义了用户如何通过URL访问Servlet。 4. **Session的设定**: - 可以通过`session-config`元素来配置Session的默认超时时间,以及其他Session相关的属性。 5....

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册十四:HTML DOM-文档元素的操作(二)

    DOM是HTML和XML文档的一种结构化表示,它将网页内容转化为树形结构,使得JavaScript可以方便地访问和修改每个元素。在这个部分,我们将学习更多关于DOM元素操作的方法和技巧。 首先,`getElementById()`是获取特定...

    大学生web网页制作设计期末大作业【6个页面+多元素组合】

    这个“大学生web网页制作设计期末大作业【6个页面+多元素组合】”项目,旨在检验学生的网页设计与开发能力,同时也体现了他们对网页布局、交互设计以及多媒体整合的理解。 首先,我们关注的是网页设计的基本组成...

    如何访问一个web应用

    接下来,可以通过以下步骤来访问Web应用: 1. **打开浏览器**:使用任何现代浏览器,如Chrome、Firefox或Edge。 2. **输入URL**:在浏览器地址栏中输入Web应用的URL。例如,`...

Global site tag (gtag.js) - Google Analytics