您的位置:首页 > 编程语言 > Java开发

Struts2-访问Servlet API

2016-05-28 22:58 447 查看

一、ActionContext

服务器端保存数据的作用域为request、session、application,对应的Servlet API分别是HttpServletRequest、HttpSession、ServletContext。在Struts2中,我们可以使用ActionContext类获取以上对象

ActionContext常用方法:

1、getContext():静态方法、获取当前ActionContext实例

2、getSession():返回一个模拟session作用域的Map对象

3、getApplication():返回一个模拟application作用域的Map对象

4、get(String key):传入参数”request”,可以返回一个模拟request作用域的Object类型对象

5、getParameters():返回一个Map对象,该对象中保存了浏览器上传的参数

使用示例(JavaBean方式):

登陆页面

<form action="servletLogin" method="post">
用户名:<input type="text" name="user.loginname"/><br/>
用户密码:<input type="password" name="user.password" /><br/>
<input type="submit" value="登陆" />  
<input type="reset" value="重置" >
</form>
</body>


action配置

<action name="servletLogin" class="com.pb12.demo01.LoginAction" method="login">
<result>/jsp/12_使用ActionContext访问Servlet的API/result.jsp</result>
</action>


action类

public class LoginAction extends ActionSupport {

private User user;

public String login() {
//获取Session作用域对象
Map<String, Object> session = ActionContext.getContext().getSession();
//把用户登陆名存入session
session.put("session_loginname", user.getLoginname());

//获取request作用域对象
Map<String, Object> request = (Map<String, Object>) ActionContext
.getContext().get("request");
//将用户登录名放入request作用域
request.put("request_loginname", user.getLoginname());

//获取application对象
Map<String, Object> application = ActionContext.getContext().getApplication();
//将用户登录名放入application对象
application.put("application_loginname", user.getLoginname());

return SUCCESS;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

}


结果页面

<body>
<!-- session作用域 -->
session:<%=session.getAttribute("session_loginname") %><br/>
<!-- request作用域 -->
request:<%=request.getAttribute("request_loginname") %><br/>
<!-- application作用域 -->
application:<%=application.getAttribute("application_loginname") %>
</body>


结果:



二、以IoC的方式实现

action类关键代码、其余代码同上

public class LoginAction implements RequestAware, SessionAware, ApplicationAware {

private Map<String, Object> request;

private Map<String, Object> session;

private Map<String, Object> application;

private User user;

@Override
public void setApplication(Map<String, Object> arg0) {
//注入appliction
this.application = arg0;
}

@Override
public void setSession(Map<String, Object> arg0) {
//注入session
this.session = arg0;
}

@Override
public void setRequest(Map<String, Object> arg0) {
//注入request
this.request = arg0;
}

public String login() {
//把用户登陆名存入session
session.put("session_loginname", user.getLoginname());

//将用户登录名放入request作用域
request.put("request_loginname", user.getLoginname());

//将用户登录名放入application对象
application.put("application_loginname", user.getLoginname());

return "success";
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

}


基于此代码我们可以封装个BaseAction类用于继承,这样就不用每个Action类都写这些代码了

public class BaseAction extends ActionSupport implements RequestAware,
SessionAware, ApplicationAware {

//HttpServletRequest
protected Map<String, Object> request;

//HttpSession
protected Map<String, Object> session;

//application
protected Map<String, Object> application;

@Override
public void setApplication(Map<String, Object> arg0) {
this.application = arg0;
}

@Override
public void setSession(Map<String, Object> arg0) {
this.session = arg0;
}

@Override
public void setRequest(Map<String, Object> arg0) {
this.request = arg0;
}

}


三、ServletActionContext

Struts2提供了ServletActionContext来获取原始的Servlet API

该对象提供了一些方法:

1、getRequest():获取HttpServletRequest对象

2、getResponse():获取HttpServletResponse对象

3、getServletContext():获取ServletContext对象

4、getPageContext():获取PageContext对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0