`

Struts2 part 3:在Action中使用ServletAPI

 
阅读更多

 

1、使用ActionContext对象,采用解耦合的方式访问ServletAPI

ActionContext context = ActionContext.getContext();

 jsp

<form action="${pageContext.request.contextPath }/demo04/scope1.action" method="post">
		<input type="text" name="scopetext" /> <input type="submit" value="提交" />
	</form>

 action,通过context获取的对象都是Map,这种方式完全与Servlet解构

public class ScopeAction1 extends ActionSupport {
	@Override
	public String execute() {
		
		ActionContext context = ActionContext.getContext();
		//parameters 
		Map<String, Object> parameters = context.getParameters();
		//default return object
		String[] strs = (String[]) parameters.get("scopetext");
		System.out.println(strs[0]);
		
		//request scope
		context.put("reqinfo", "request scope");
		System.out.println(context.get("reqinfo"));
		
		//session scope
		Map<String, Object> session = context.getSession();
		session.put("sessioninfo", "session sceop");
		System.out.println(session.get("sessioninfo"));
		
		//appliction scope
		Map<String, Object> application = context.getApplication();
		application.put("appinfo", "application scope");
		System.out.println(application.get("appinfo"));
		
		return NONE;
	}
}

配置

	<package name="demo04" namespace="/demo04" extends="struts-default">
		<action name="scope1" class="demo04.ScopeAction1">
		</action>
	</package>

 

2、使用接口注入的方式使用ServletAPI

jsp

	<form action="${pageContext.request.contextPath }/demo04/scope2.action" method="post">
		<input type="text" name="scopetext" /> <input type="submit" value="提交" />
	</form>

 Action,通过实现接口,设置setXXX来获取HttpServletXXX对象

public class ScopeAction2 extends ActionSupport implements ServletContextAware, ServletResponseAware, ServletRequestAware {
	private HttpServletResponse response;
	private ServletContext context;
	private HttpServletRequest request;

	@Override
	public String execute() {

		System.out.println(request.getParameter("scopetext"));

		// request scope
		request.setAttribute("reqinfo", "request scope");
		System.out.println(request.getAttribute("reqinfo"));

		// session scope
		 HttpSession session = request.getSession();
		 session.setAttribute("sessioninfo", "session sceop");
		System.out.println(session.getAttribute("sessioninfo"));

		// appliction scope
		context.setAttribute("appinfo", "application scope");
		System.out.println(context.getAttribute("appinfo"));

		return NONE;
	}

	@Override
	public void setServletResponse(HttpServletResponse response) {
		this.response = response;

	}

	@Override
	public void setServletContext(ServletContext context) {
		this.context = context;
	}

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

}

配置

		<action name="scope2" class="demo04.ScopeAction2">
		</action>

 3、通过ServletActionContext耦合的方式获取ServletAPI

jsp

	<form action="${pageContext.request.contextPath }/demo04/scope3.action" method="post">
		<input type="text" name="scopetext" /> <input type="submit" value="提交" />
	</form>

 Action

public class ScopeAction3 extends ActionSupport {

	@Override
	public String execute() {

		System.out.println(ServletActionContext.getRequest().getParameter("scopetext"));

		// request scope
		ServletActionContext.getRequest().setAttribute("reqinfo", "request scope");
		System.out.println(ServletActionContext.getRequest().getAttribute("reqinfo"));

		// session scope
		 HttpSession session = ServletActionContext.getRequest().getSession();
		 session.setAttribute("sessioninfo", "session sceop");
		System.out.println(session.getAttribute("sessioninfo"));

		// appliction scope
		ServletContext context = ServletActionContext.getServletContext();
		context.setAttribute("appinfo", "application scope");
		System.out.println(context.getAttribute("appinfo"));

		return NONE;
	}

}

 配置

		<action name="scope3" class="demo04.ScopeAction3">
		</action>

 

 

 

这三种方式最好的是第一种,Action和Servlet完全解耦合,通过ServletActionContext的方式是最直接的,但也是耦合度最高的

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    精通struts:基于mvc的java web设计与开发part3

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    精通struts:基于mvc的java web设计与开发part2

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    struts 2.3.4.1 最新英文版API

    org.apache.struts2.dispatcher Classes for action dispatching in Struts (the Controller part of MVC). org.apache.struts2.dispatcher.mapper org.apache.struts2.dispatcher.multipart Classes to help ...

    精通struts:基于mvc的java web设计与开发part1

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。书中...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    2.8.3 在JSP页面中使用Include指令后,JSP不能编译 2.9 精彩回顾 第3章前人栽树后人乘凉 ——、JSP内置对象 3.1 本章学习任务 3.1.1 本章知识体系 3.1.2 实例开发任务 3.2 简化开发JSP内置对象概述 3.2.1 为什么...

    外文翻译 stus MVC

    ActionServlet is the Command part of the MVC implementation and is the core of the Framework. ActionServlet (Command) creates and uses Action, an ActionForm, and ActionForward. As mentioned earlier, ...

Global site tag (gtag.js) - Google Analytics