在struts2中Action访问Servlet API

Struts2中提供了一种很轻松的方式来访问servlet api ,web应用中通常要访问的servlet api就是HttpservletRequest,HttpSession,和servletContext,这三个类分别代表jsp内置对象中的request,session和application。
struts2提供了一个actionContext类,struts2中的action可以通过该类来访问servlet api,下面是actioncontext类中包含的几个常用方法:

public static ActionContext getContext() :获得当前Action的ActionContext实例。
public Object get(Object key) :此方法类似于调用HttpServletRequest的getAttribute(String name)方法。
public void put(Object key, Object value) :此方法类似于调用HttpServletRequest 的setAttribute(String name, Object o)。
public Map getParameters() :获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap() 方法。
public Map getSession() :返回一个Map对象,该Map对象模拟了HttpSession实例。
public void setSession(Map session) : 直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名-属性值对。
public Map getApplication() :返回一个Map对象,该对象模拟了该应用的ServletContext实例。
public void setApplication(Map application) :直接传入一个Map实例,将该Map实例里的key-value对转换成application的属性名-属性值对。

下面就是一些代码片段

public String execute() throws Exception {
		System.out.println(getUsername() + "   " + getPassword());

		// 获取actioncontext实例来访问servlet
		ActionContext ctx = ActionContext.getContext();
		// 获得servletcontext中的counter属性
		Integer counter = (Integer) ctx.getApplication().get("counter");
		if (counter == null)
			counter = 1;
		else
			counter += 1;
		// 将增加后的counter值设置成counter属性
		ctx.getApplication().put("counter", counter);
		// 将登陆后的username设置成一个httpsession属性
		ctx.getSession().put("username", getUsername());

		if (getUsername().equals("text") && getPassword().equals("text")) {
			ActionContext.getContext().getSession().put("user", getUsername());
			ctx.put("tip", "服务器提示:您已经登陆成功");
			return SUCCESS;
		} else {
			ctx.put("tip", "服务器提示:登陆失败");
			return ERROR;
		}
	}
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'success.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

</head>

<body>
	登录成功! ${sessionScope.user } 访问次数${applicationScope.counter }
	<br> ${sessionScope.user }您已经登录
	<br>
	<br> ${requestScope.tip}
</body>
</html>

发表评论

电子邮件地址不会被公开。 必填项已用*标注