八 Struts2訪問Servlet的API方式三:介面注入
阿新 • • 發佈:2018-11-08
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>