1. 程式人生 > >Strtus2訪問Servlet的API 三種方式

Strtus2訪問Servlet的API 三種方式

不一樣的地方就是下圖所示:

--------------------------------------------以下是具體程式碼過程-----------------------------------------

以下是demo1.jsp程式碼

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Strtus2 訪問Servlet的API</h3><br>
<h3>方式一:完全解耦和方式</h3><br>
<form action="${ pageContext.request.contextPath }\requestDemo1.action" method="post">
姓名:<input type="text" name="name"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
<h3>方式二:使用原生的方式訪問</h3><br>
<form action="${ pageContext.request.contextPath }\requestDemo2.action" method="post">
姓名:<input type="text" name="name"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
<h3>方式三:介面注入的方式</h3><br>
<form action="${ pageContext.request.contextPath }\requestDemo3.action" method="post">
姓名:<input type="text" name="name"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
</body>
</html>

以下是demo2.jsp程式碼

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>成功的標誌</h1>
${ reqName }
${ sessName }
${ appName }
</body>
</html>

在struts.xml中

新建以下類和xml

以下是RequestDemo1的程式碼:

package demo1;

import org.apache.struts2.dispatcher.HttpParameters;
import org.apache.struts2.dispatcher.Parameter;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RequestDemo1 extends ActionSupport {
private static final long serialVersionUID = 7010536980663323289L;
@Override
public String execute() throws Exception {
ActionContext context = ActionContext.getContext();
HttpParameters map = context.getParameters();
System.out.println(map);
for(String key : map.keySet()) {
Parameter parameter = map.get(key);
System.out.println("key:" + key + " value:"+ parameter);
}
context.put("reqName", "reqValue");
context.getSession().put("sessName", "sessValue");
context.getApplication().put("appName", "appValue");
return SUCCESS;
}
}

以下是RequestDemo2的程式碼:

package demo1;

import java.util.Arrays;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RequestDemo2 extends ActionSupport {
private static final long serialVersionUID = 7010536980663323289L;
@Override
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
Map<String, String[]> map = request.getParameterMap();
for(String key : map.keySet()) {
String[] values = map.get(key);
System.out.println("key:" + key + " value:"+ Arrays.toString(values));
}
request.setAttribute("reqName","reqValue");
request.getSession().setAttribute("sessName", "sessValue");
request.getServletContext().setAttribute("appName","appValue1");
ServletActionContext.getServletContext().setAttribute("appName","appValue2");
return SUCCESS;
}
}

以下是RequestDemo3的程式碼:

 

package demo1;

import java.util.Arrays;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;

public class RequestDemo3 extends ActionSupport implements ServletRequestAware,ServletContextAware{
private static final long serialVersionUID = 7010536980663323289L;
private HttpServletRequest request;
private ServletContext context;
@Override
public String execute() throws Exception {
Map<String, String[]> map = request.getParameterMap();
for(String key : map.keySet()) {
String[] values = map.get(key);
System.out.println("key:" + key + " value:"+ Arrays.toString(values));
}
request.setAttribute("reqName","reqValue");
request.getSession().setAttribute("sessName", "sessValue");
context.setAttribute("appName","appValue1");
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public void setServletContext(ServletContext context) {
this.context = context;
}
}