Web资源获取

1、拦截器获取 Web 资源模式

2、静态对象获取 Web 资源模式

1、拦截器获取 Web 资源模式:

(1)使用Struts2 Aware拦截器

index.jsp表单:

<body>
     <form action="<%=path %>/firstAction" method="post">
      姓名:<input type="text" name="name"><br>
      密码:<input type="password" name="pwd"><br>
      <input type="submit" value="登录">
    </form></body>

FirstAction.java:

package com.qyy.action;

import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;

/*  要实现拦截器接口,及其中的抽象方法
 *  三个拦截器分别是 request,response,application
 *  重写它们的抽象方法将private属性初始化
 *
 *  重写execute方法
 */
public class FirstAction implements ServletRequestAware, ServletResponseAware, ServletContextAware{

	private ServletRequest request;
	private ServletResponse response;
	private ServletContext con;

	public String execute() {
		String username = request.getParameter("name");
		System.out.println(username);
		return "success";
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		request = arg0;
	}

	@Override
	public void setServletResponse(HttpServletResponse arg0) {
		response = arg0;
	}

	@Override
	public void setServletContext(ServletContext arg0) {
		con = arg0;
	}
}

struts.xml配置:

<struts>
  <package name="test" extends="struts-default">
    <action name="firstAction" class="com.qyy.action.FirstAction">
      <result name="success">/index.jsp</result>
    </action>
  </package>
</struts>

(2)使用Struts2 RequestAware拦截器

index.jsp表单填写:

<body>
     <form action="<%=path %>/secondAction" method="post">
      姓名:<input type="text" name="name"><br>
      密码:<input type="password" name="pwd"><br>
      <input type="submit" value="登录">
    </form>
</body>

SecondAction.java:

package com.qyy.action;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.RequestAware;

/*
 * 使用Struts2 RequestAware拦截器
 * 实现RequestAware接口
 *
 * 这样就完成了程序在走到这个类之前先经过拦截器,
 * 拦截器负责调用这个类的setRequest()方法将所以Web资源的对象通过map集合获取。
 */
public class SecondAction implements RequestAware{

	private ServletRequest request;
	private ServletResponse response;
	private ServletContext con;

	public String execute() {
		String username = request.getParameter("name");
		System.out.println("第二个action  "+username);
		return "success";
	}

	@Override
	public void setRequest(Map<String, Object> arg0) {
		request = (ServletRequest) arg0.get(StrutsStatics.HTTP_REQUEST);
		response = (ServletResponse) arg0.get(StrutsStatics.HTTP_RESPONSE);
		con = (ServletContext) arg0.get(StrutsStatics.SERVLET_CONTEXT);
	}

}

Struts.xml配置:

<action name="secondAction" class="com.qyy.action.SecondAction">
      <result name="success">/index.jsp</result>
</action>

  

2、静态对象获取 Web 资源模式

(1)使用Struts2内置静态对象ActionContext

ThirdAction.java:(比较简便的方法,不用继承或实现任何接口)

package com.qyy.action;

import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

/*
 * 比较简便的方法,不用继承或实现任何接口
 */

public class ThirdAction {
	public String execute() {
		ActionContext ac = ActionContext.getContext();
		/*然后就可以使用ac来获得资源
		 */
		ServletRequest request = (ServletRequest) ac.get(ServletActionContext.HTTP_REQUEST);
		ServletResponse response = (ServletResponse) ac.get(ServletActionContext.HTTP_RESPONSE);
		ServletContext con = (ServletContext) ac.get(ServletActionContext.SERVLET_CONTEXT);

		String username = request.getParameter("name");
		System.out.println("第三种  "+username);

		return "success";
	}
}

  
(2)使用Struts2内置静态对象ServletActionContext

***推荐使用的一种方式:最方便最简便的方法

package com.qyy.action;

import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.struts2.ServletActionContext;

public class FourthAction {
	public String execute() {
		ServletRequest request = ServletActionContext.getRequest();
		ServletResponse response = ServletActionContext.getResponse();
		ServletContext con = ServletActionContext.getServletContext();
		String username = request.getParameter("name");
		System.out.println("第四种   "+username);
		return "success";
	}
}
时间: 2024-08-28 20:25:24

Web资源获取的相关文章

Struts2 Web 资源获取的四种方式

Struts2 Web 资源获取一个有四种方式,两个大类 拦截器获取 Web 资源模式 静态对象获取 Web 资源模式 第一种:实现ServletRequestAware.ServletResponseAware.ServletContextAware接口 struts.xml <action name="FirstAction" class="Action.FirstAction"> <result name="success"

尚硅谷公开课--struts2--3--struts2中获取web资源的几种方式

在struts2中,可以在JavaBean类中写公用的返回值为String类型的方法来响应页面上的请求,也可以在此方法中获取web资源,如:request,application,session,parameters等. 一.通过ActionContext获取 步骤: 1.获取ActionContext对象 通过ActionContext.getContext()获取一个ActionContext的实例 2.获取web资源对应胡Map 此Map类型为Map<String,Object>.获取方

Struts2学习第三课 访问Web资源

1.什么是WEB资源? HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么访问WEB资源? B/S的应用的Controller中必然需要访问WEB资源,例如,向域对象中读写属性,读写Cookie,获取realPath等等. 3.如何访问? 在Action中,可以通过一下方式访问web的HttpSession,HttpServletRequest,HttpServletResponse等资源 与Servlet AP

移动web资源整理

2013年初接触移动端,简单做下总结,首先了解下移动web带来的问题 设备更新换代快--低端机遗留下问题.高端机带来新挑战 浏览器厂商不统一--兼容问题多 网络更复杂--弱网络,页面打开慢 低端机性能差--页面操作卡顿 HTML5新技术多--学习成本不低 未知问题--坑多 面对这些问题,一开始我们只能在未知中试错,知道错误的方案才能更容易寻找正确的解决问题思路,2年多来,可看到移动web在业界不断趋向于成熟,各种框架和解决方案不断的涌现让移动端开发不再是个噩梦. 这几天把想到的一点经验先罗列出来

小谈——读取web资源文件的方式和路径问题

读取web资源文件的方式 a): 采用servletContext对象获得. 优点: 任意文件,任意路径都可获得 缺点: 必须在web环境下 // 拿到全局对象 ServletContext sc = this.getServletContext(); // 获取p1.properties文件的路径 String path = sc.getRealPath("/WEB-INF/classes/p1.properties"); b): 采用resourceBundle获得 优点: 非we

Struts2:在 Action 中访问 WEB 资源

1.什么是 WEB 资源? HttpServletRequest.HttpSession.ServletContext 等原生的 Servlet API. 2.为什么访问 WEB 资源? B/S 的应用的 Controller 中必然需要访问 WEB 资源(向域对象中读写属性.读写Cookie.获取 realPath 等) 3.如何访问? 1).和Servlet API 解耦的方式:只能访问有限的 Servlet API 对象,且只能访问有限的方法.(使用 ActionContext .实现 X

Struts2(四):在Action中如何访问Web资源

1.什么WEB资源? HttpServletRequest,HttpServletRespone,HttpApplication,ServletContext,HttpSession等原生ServletAPI. 2.在Struts2中为什么要访问WEB资源? B/S应用中的Controller必然会有场景需要访问WEB资源:向域对象中读写属性,读取Cookie,获取realPath等. 3.在Struts2中如何访问WEB资源? a)和ServletAPI解耦的方式:只能有限的ServletAP

【原】移动web资源整理

[原]移动web资源整理 回顾2014年,刚转来到新的部门,非常渴望做出一个所谓的成功产品,心态几乎变了,每天都忙忙碌碌在项目中,把原来阅读和学习的习惯给忽视了,作为一个技术人员,没有通过学习新的知识来充实自己,跟进时代的步伐,是比较致命的:另外一点是运动也缺少了,感觉身体不如从前,例如工作太累,晚上容易失眠,让自己感到惶恐,想想就不开心.于是简单给自己定个2015上半年的计划: 贷款买个房子 每周羽毛球.跑步.骑单车 阅读<自控力>.<大数据时代>.<逻辑思维> 学习

在Action 中访问web资源

1.什么是web资源: HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么要访问web资源? B/S应用的Controller 中必然需要访问web资源:如域对象中读写属性,读取Cookie,获取realPath... 3.如何访问? 1.和Servlet API 解耦的方式:只能访问有限的Servlet API 对象,且只能访问有限的方法(读取请求的参数,读写域对象的属性,使Session对象失效等等) -->