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>