说明
- 本文介绍前台和后台获取request,session,application对象
- 本文介绍前台和后台获取HttpServletRequest和ServletContext对象
准备工作
login.jsp部分
<%@ page contentType="text/html;charset=GBK" language="java" %>
<html>
<head>
<title>登入成功界面</title>
</head>
<body>
<%--接收request参数--%>
<div>
${request_hello}
</div>
</body>
</html>
index.jsp部分
<%@ page contentType="text/html;charset=GBK" language="java" %>
<%
Object str = application.getAttribute("application_counter");
str = str != null ? "第" + str + "次访问此页面" : "";
%>
<html>
<head>
<title>登入界面</title>
</head>
<body>
<form action="login.action" name="login.LoginAction">
<%--接收session参数--%>
<input type="text" id="login_user_name" name="userName" placeholder="请输入用户名" value="${session_username}"/>
<input type="password" id="login_user_password" name="userPassword" placeholder="请输入密码"
value="${session_userPassword}"/>
<div id="login_is_userName">${isLogin}</div>
<%--接收application参数--%>
<div id="login_counter">
<%=str%>
</div>
<input type="submit" id="login" value="登入"/>
</form>
</body>
</html>
request,session,application对象获取方式
1.与Servlet API解耦的访问方式
- 通过ActionContext获得request,session,application对象
- 通过接口注入方式来获取request,session,application对象
2.与Servlet API耦合的访问方式
- 通过ServletActionContext来获取HttpServletRequest和ServletContext对象
- 通过接口注入方式来获取HttpServletRequest和ServletContext对象
1.与Servlet API解耦的访问方式
通过ActionContext获得request,session,application对象
LoginAction代码部分
package login.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import util.log4j.MyLog4J;
import java.util.Map;
/**
* 创建日期:2018年03月04日
* 创建时间:10:15
* 项目名称:DEMO
*/
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity> {
private Logger myLog4J = MyLog4J.getLog(this.getClass());
private LoginEntity loginEntity = new LoginEntity();
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
String result = null;
ActionContext actionContext = ActionContext.getContext();
Map request = (Map) actionContext.get("request");
Map session = actionContext.getSession();
Map application = actionContext.getApplication();
if (loginEntity != null)
if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
//登入成功后的欢迎提示
request.put("request_hello", "登入成功,欢迎来到Struts2首页");
result = SUCCESS;
} else {
//保存账号和密码
session.put("session_username", loginEntity.getUserName());
session.put("session_userPassword", loginEntity.getUserPassword());
//网站访问量
Integer integer = (Integer) application.get("application_counter");
integer = integer == null ? 1 : ++integer;
application.put("application_counter", integer);
myLog4J.info(String.valueOf(integer));
if (loginEntity != null)
loginEntity.setIsLogin("用户名或密码错误");
result = LOGIN;
}
return result;
}
public LoginEntity getModel() {
return loginEntity;
}
}
通过接口注入方式来获取request,session,application对象
LoginAction代码部分
package login.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import util.log4j.MyLog4J;
import java.util.Map;
/**
* 创建日期:2018年03月04日
* 创建时间:10:15
* 项目名称:DEMO
*/
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity>, RequestAware, SessionAware, ApplicationAware {
private Logger myLog4J = MyLog4J.getLog(this.getClass());
private LoginEntity loginEntity = new LoginEntity();
private Map request;
private Map session;
private Map application;
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
String result = null;
if (loginEntity != null)
if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
//登入成功后的欢迎提示
request.put("request_hello", "登入成功,欢迎来到Struts2首页");
result = SUCCESS;
} else {
//保存账号和密码
session.put("session_username", loginEntity.getUserName());
session.put("session_userPassword", loginEntity.getUserPassword());
//网站访问量
Integer integer = (Integer) application.get("application_counter");
integer = integer == null ? 1 : ++integer;
application.put("application_counter", integer);
myLog4J.info(String.valueOf(integer));
if (loginEntity != null)
loginEntity.setIsLogin("用户名或密码错误");
result = LOGIN;
}
return result;
}
public LoginEntity getModel() {
return loginEntity;
}
public void setApplication(Map<String, Object> map) {
application = map;
}
public void setRequest(Map<String, Object> map) {
request = map;
}
public void setSession(Map<String, Object> map) {
session = map;
}
}
2.与Servlet API耦合的访问方式
通过ServletActionContext来获取HttpServletRequest和ServletContext对象
LoginAction代码部分
package login.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import util.log4j.MyLog4J;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* 创建日期:2018年03月04日
* 创建时间:10:15
* 项目名称:DEMO
*/
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity> {
private Logger myLog4J = MyLog4J.getLog(this.getClass());
private LoginEntity loginEntity = new LoginEntity();
@Override
public String execute() throws Exception {
String result = null;
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
ServletContext application = ServletActionContext.getServletContext();
if (loginEntity != null)
if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
//登入成功后的欢迎提示
request.setAttribute("request_hello", "登入成功,欢迎来到Struts2首页");
result = SUCCESS;
} else {
//保存账号和密码
session.setAttribute("session_username", loginEntity.getUserName());
session.setAttribute("session_userPassword", loginEntity.getUserPassword());
//网站访问量
Integer integer = (Integer) application.getAttribute("application_counter");
integer = integer == null ? 1 : ++integer;
application.setAttribute("application_counter", integer);
myLog4J.info(String.valueOf(integer));
if (loginEntity != null)
loginEntity.setIsLogin("用户名或密码错误");
result = LOGIN;
}
return result;
}
public LoginEntity getModel() {
return loginEntity;
}
}
通过接口注入方式来获取HttpServletRequest和ServletContext对象
LoginAction代码部分
package login.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
import util.log4j.MyLog4J;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* 创建日期:2018年03月04日
* 创建时间:10:15
* 项目名称:DEMO
*/
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity>, ServletRequestAware, ServletContextAware {
private Logger myLog4J = MyLog4J.getLog(this.getClass());
private LoginEntity loginEntity = new LoginEntity();
private ServletContext application;
private HttpServletRequest request;
@Override
public String execute() throws Exception {
String result = null;
HttpSession session = request.getSession();
application = ServletActionContext.getServletContext();
if (loginEntity != null)
if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
//登入成功后的欢迎提示
request.setAttribute("request_hello", "登入成功,欢迎来到Struts2首页");
result = SUCCESS;
} else {
//保存账号和密码
session.setAttribute("session_username", loginEntity.getUserName());
session.setAttribute("session_userPassword", loginEntity.getUserPassword());
//网站访问量
Integer integer = (Integer) application.getAttribute("application_counter");
integer = integer == null ? 1 : ++integer;
application.setAttribute("application_counter", integer);
myLog4J.info(String.valueOf(integer));
if (loginEntity != null)
loginEntity.setIsLogin("用户名或密码错误");
result = LOGIN;
}
return result;
}
public LoginEntity getModel() {
return loginEntity;
}
public void setServletContext(ServletContext servletContext) {
application = servletContext;
}
public void setServletRequest(HttpServletRequest httpServletRequest) {
request = httpServletRequest;
}
}