struts2 Action 访问web对象(request,session,application)

Struts2 Action 访问web对象一共有四种,分别是:

一、创建requestsessionapplicationMap对象

二、实现RequestAware,SessionAware,ApplicationAware接口(IOC注入)

三、创建传统的HttpServletRequest,HttpSession,ServletContext对象

四、实现ServletRequestAwareServletContextAware接口(IOC注入)

 

其中 二、四方法是ICO(注入)方式实现,都是通过一、二的基础上加以改进的实现方式,下面列举相对应的集体实例:

 

一、创建requestsessionapplicationMap对象(主要代码背景蓝色标记)

 

 

LoginAction.java

package com.wym.action;

 

import java.util.Map;

 

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

import com.wym.bean.User;

import com.wym.bussiess.UserDao;

 

public class LoginAction extends ActionSupport{

private User user;

private Map<String, Object> request;

private Map<String, Object> session;

private Map<String, Object> application;

 

public LoginAction(){

System.out.println("执行LoginAction构造方法!");

request = (Map)ActionContext.getContext().get("request");

session = ActionContext.getContext().getSession();

application = ActionContext.getContext().getApplication();

}

public String execute(){

UserDao userDao = new UserDao(); 

if(userDao.loginUser(user)){

request.put("a""this is a");

session.put("b""this is b");

application.put("c""this is c");

return "success";

}

else{

return "faint";

}

}

public User getUser() {

return user;

}

 

public void setUser(User user) {

this.user = user;

}

}

 

获取web对象的值(jsp文件中)

 <s:property value="#request.a"/><br/>    //获取request域中的值

 <s:property value="#session.b"/><br/>    //获取session域中的值

 <s:property value="#application.c"/><br/>

 <s:property value="#attr.b"/><br/>        //先发现那个域由该属性名就使用该域

 

从实例中可以看到,该方式的实现方法,首先创建私有(private)的Map对象,

对象名分别为requestsessionapplication 之后在Action的构造方法中初始化这三个Map对象,在为这三个对象赋值时,要使用Mapput方法。

 

 

 

二、实现RequestAware,SessionAware,ApplicationAware接口

 

该方式与第一种方式差不多,仅仅是实现RequestAwareSessionAwareApplicationAware三个接口 并实现对应的方法 也需要创建Map对象 但不需要再Action的构造方法中初始化

 

 

package com.wym.action;

 

import java.util.Map;

 

import org.apache.struts2.interceptor.ApplicationAware;

import org.apache.struts2.interceptor.RequestAware;

import org.apache.struts2.interceptor.SessionAware;

 

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

import com.wym.bean.User;

import com.wym.bussiess.UserDao;

 

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

private User user;

private Map<String, Object> request;

private Map<String, Object> session;

private Map<String, Object> application;

 

public LoginAction(){

System.out.println("执行LoginAction构造方法!");

}

public String execute(){

UserDao userDao = new UserDao(); 

if(userDao.loginUser(user)){

request.put("a""this is a");

session.put("b""this is b");

application.put("c""this is c");

return "success";

}

else{

return "faint";

}

}

public User getUser() {

return user;

}

 

public void setUser(User user) {

this.user = user;

}

 

 

public void setRequest(Map<String, Object> request) {

// TODO Auto-generated method stub

this.request = request;

}

 

 

public void setSession(Map<String, Object> session) {

// TODO Auto-generated method stub

this.session = session;

}

 

 

public void setApplication(Map<String, Object> application) {

// TODO Auto-generated method stub

this.application = application;

}

}

 

三、创建传统的HttpServletRequest,HttpSession,ServletContext对象

 

 

package com.wym.action;

 

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

 

import org.apache.struts2.ServletActionContext;

 

import com.opensymphony.xwork2.ActionSupport;

import com.wym.bean.User;

import com.wym.bussiess.UserDao;

 

public class LoginAction extends ActionSupport{

private User user;

private HttpServletRequest request;

private HttpSession session;

private ServletContext application;

 

public LoginAction(){

System.out.println("执行LoginAction构造方法!");

request = ServletActionContext.getRequest();

session = request.getSession();

application = session.getServletContext();

}

public String execute(){

UserDao userDao = new UserDao(); 

if(userDao.loginUser(user)){

request.setAttribute("a""this is a");

session.setAttribute("b""this is b");

application.setAttribute("c""this is c");

return "success";

}

else{

return "faint";

}

}

public User getUser() {

return user;

}

 

public void setUser(User user) {

this.user = user;

}

}

 

 

四、实现ServletRequestAwareServletContextAware接口

 

package com.wym.action;

 

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

 

import org.apache.struts2.ServletActionContext;

import org.apache.struts2.interceptor.ServletRequestAware;

import org.apache.struts2.util.ServletContextAware;

 

import com.opensymphony.xwork2.ActionSupport;

import com.wym.bean.User;

import com.wym.bussiess.UserDao;

 

public class LoginAction extends ActionSupport implements ServletContextAware, ServletRequestAware{

private User user;

private HttpServletRequest request;

private HttpSession session;

private ServletContext application;

 

public LoginAction(){

System.out.println("执行LoginAction构造方法!");

}

public String execute(){

UserDao userDao = new UserDao(); 

if(userDao.loginUser(user)){

request.setAttribute("a""this is a");

session.setAttribute("b""this is b");

application.setAttribute("c""this is c");

return "success";

}

else{

return "faint";

}

}

public User getUser() {

return user;

}

 

public void setUser(User user) {

this.user = user;

}

 

 

public void setServletContext(ServletContext application) {

// TODO Auto-generated method stub

this.application = application;

}

 

 

public void setServletRequest(HttpServletRequest request) {

// TODO Auto-generated method stub

this.request = request;

this.session = request.getSession();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值