1. 程式人生 > >八 Struts2訪問Servlet的API方式三:介面注入

八 Struts2訪問Servlet的API方式三:介面注入

jsp:前段頁面

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <h1>Struts2訪問Servlet的PAI</h1> 11 <h3>方式三:介面注入的方式</h3> 12 <form action="${pageContext.request.contextPath }/requestDemo3.action" method="post"> 13 姓名:<input type="text" name="name" /><
br/> 14 密碼:<input type="password" name="password"/><br/> 15 <input type="submit" value="提交" > 16 </form> 17 </body> 18 </html>

Action類:

 1 package com.itheima.struts2.demo1;
 2 
 3 import java.util.Arrays;
 4 import java.util.Map;
 5 
 6 import javax.servlet.ServletContext;
7 import javax.servlet.http.HttpServletRequest; 8 9 import org.apache.struts2.interceptor.ServletRequestAware; 10 import org.apache.struts2.util.ServletContextAware; 11 12 import com.opensymphony.xwork2.ActionSupport; 13 14 /** 15 * 訪問ServletAPI的方式三:介面注入的方式 16 * 比較繁瑣 17 * Action是單例還是多例?Servlet是單例的,多個程式訪問一個Servlet只會建立一個Servlet例項 18 *而Action是多例的,有一個請求就會建立一個Action例項,所以不會出現執行緒安全問題。 19 */ 20 public class RequestDemo3 extends ActionSupport implements ServletRequestAware,ServletContextAware{ 21 22 23 private HttpServletRequest request; 24 private ServletContext context; 25 26 public RequestDemo3() { 27 super(); 28 System.out.println("RequestDemo3被建立了"); 29 } 30 31 public String execute() throws Exception{ 32 //一、接收引數,通過介面注入的方式獲得request物件 33 Map<String, String[]> map = request.getParameterMap(); 34 for (String key : map.keySet()) { 35 String[] values = map.get(key); 36 System.out.println(key+" "+Arrays.toString(values)); 37 } 38 //二、向物件中儲存資料 39 //向request域中儲存資料 40 request.setAttribute("reqName", "reqValue"); 41 //向session中儲存資料 42 request.getSession().setAttribute("sessName", "sessValue"); 43 //向application(ServletContext)中儲存資料 44 context.setAttribute("appName", "appValue"); 45 46 return super.execute();//相當於返回success,原始碼 47 } 48 49 @Override 50 public void setServletRequest(HttpServletRequest request) { 51 this.request=request; 52 53 } 54 55 @Override 56 public void setServletContext(ServletContext context) { 57 this.context = context; 58 59 } 60 61 }

配置檔案:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7          <package name="demo1" extends="struts-default" namespace="/">
 8          <action name="requestDemo3" class="com.itheima.struts2.demo1.RequestDemo3" method="">
 9          <result name="success">/demo1/demo2.jsp</result>
10          </action>
11          
12          </package> 
13           
14 </struts>

SUCCESS跳轉頁面:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>顯示資料</title>
 8 </head>
 9 <body>
10 <h1>顯示資料</h1>
11 ${reqName }
12 ${sessName }
13 ${appName }
14 </body>
15 </html>