八 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>

猜你喜欢

转载自www.cnblogs.com/ltfxy/p/9824099.html