Struts上路_07-与Servlet解耦

准备:

1)访问路径:

<br>
	<a href="${pageContext.request.contextPath}/pkgAction/ActionTest1.action"> ActionTest1.action </a><br>
	<a href="${pageContext.request.contextPath}/pkgAction/ActionTest2.action"> ActionTest2.action </a><br>
<br>


2strtus.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

	<package name="pkgAction" namespace="/pkgAction" extends="struts-default">
		<action name="ActionTest1" class="cn.cvu.action.ActionTest1" method="testServlet">
			<result name="servlet">/actiontest1.jsp</result>
		</action>
		
		<action name="ActionTest2" class="cn.cvu.action.ActionTest2" method="testServlet">
			<result name="success">/actiontest2.jsp</result>
		</action>
	</package>

</struts>


1.使用ServletActionContext工具类:

(1)代码:

package cn.cvu.action;

import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ActionTest1 extends ActionSupport {
	
	/*public String execute() {
		System.out.println("ActionTest1 in Action");
		return "success";
	}*/
	
	/*
	 * 与Servlet解耦,使用ServletActionContext
	 */
	public String testServlet(){
		HttpServletResponse response = ServletActionContext.getResponse();
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("BookName1", "老人与海1");
		
		Map session = ServletActionContext.getContext().getSession();
		session.put("BookSession1", "20131017_1");
		
		ServletContext context = ServletActionContext.getServletContext();
		context.setAttribute("BookAuthor1", "海明威1");
		
		return "servlet";
	}
}


(2)测试:actiontest1.jsp 

<body>
			actiontest1: <br>
			使用ServletActionContext与Servlet解耦<br>
			BookName1: ${ requestScope.BookName1 }<br>
			BookSession1: ${ sessionScope.BookSession1 }<br>
			BookAuthor1: ${ applicationScope.BookAuthor1 }<br>
</body>

Struts上路_07-与Servlet解耦


2.使用Aware接口:

(1)代码: 

package cn.cvu.action;

import java.util.Map;
import javax.servlet.ServletContext;
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.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;

public class ActionTest2 extends ActionSupport
implements ServletContextAware, ServletResponseAware, ServletRequestAware, SessionAware {
	
	HttpServletResponse response;
	HttpServletRequest request;
	Map session;
	ServletContext context;
	
	/*public String execute() {
		System.out.println("ActionTest2 in Action");
		return "success";
	}*/
	
	/*
	 * 实现接口,运行时注入
	 */
	public String testServlet(){
		request.setAttribute("BookName2", "老人与海2");
		session.put("BookSession2", "20131017_2");
		context.setAttribute("BookAuthor2", "海明威2");
		
		return "success";
	}

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

	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
		System.out.println("setServletRequest");
	}

	@Override
	public void setServletResponse(HttpServletResponse response) {
		this.response = response;
		System.out.println("setServletResponse");
	}

	@Override
	public void setServletContext(ServletContext context) {
		this.context = context;
		System.out.println("setServletContext");
	}
}


2)测试:actiontest2.jsp 

<body>
			actiontest2 <br>
			实现ServletContextAware, ServletResponseAware, ServletRequestAware, SessionAware接口,运行时注入与Servlet解耦<br>
			BookName2: ${ requestScope.BookName2 }<br>
			BookSession2: ${ sessionScope.BookSession2 }<br>
			BookAuthor2: ${ applicationScope.BookAuthor2 }<br>
</body>

Struts上路_07-与Servlet解耦

- end

你可能感兴趣的:(mvc,struts,struts2,javaweb,Webwork)