Struts2中提供了4种获取Web元素的方式之接收参数的案列

方式一;使用核心类:ServletActionContext

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.ServletActionContext;


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

public class LoginAction {
    Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    private HttpServletRequest request;
    private HttpServletResponse response;

    //alt+insert

    public LoginAction(){
        request = ServletActionContext.getRequest();
       response=ServletActionContext.getResponse();
    }

    public String index(){
        String uid=request.getParameter("uid");
        String uname=request.getParameter("uname");
        String upwd=request.getParameter("upwd");

        HttpSession session=request.getSession();
        //ServletContext对象的作用是在整个Web应用的动态资源直接共享数据
        final ServletContext servletContext=request.getSession().getServletContext();

        session.setAttribute("uid",uid);
        request.setAttribute("uname",uname);
        logger.trace("uname:"+uname);
        logger.trace("upwd:"+upwd);
        logger.trace("我来了");
        return "index";
    }

    //打开新增页面
    public String add(){
        logger.trace("进入新的页面");
        return "add";
    }

    //做新增页面的操作

public String doAdd(){
        logger.trace("执行新增的操作");
        return "doAdd";
}

}

方式二:实现2个接口 ServletRequestAware ServletResponseAware 注入的概念

            第一次调用你要访问的方法时,都会先执行 setServletRequest setServletResponse 这两个方法


package com.oracle.action;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Login2Action implements ServletRequestAware,ServletResponseAware{
    Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
    private HttpServletRequest request;
    private HttpServletResponse response;
    public  String index(){
        String uname=request.getParameter("uname");
        logger.trace(uname);
        logger.trace("我是第3个执行");

        return "index";
    }

    public void setServletRequest(HttpServletRequest httpServletRequest) {
        logger.trace("我先执行。。。。。。。。。。。。");
        this.request=httpServletRequest;
    }

    public void setServletResponse(HttpServletResponse httpServletResponse) {

        logger.trace("我第2个执行。。。。。。。。");
        this.response=httpServletResponse;
    }
}
 

方式三:使用Map模拟第一种方式,使用来模拟HttpServletRequest类 放东西

使用核心类:

ActionContext

package com.oracle.action;

import com.opensymphony.xwork2.ActionContext;

import java.util.Map;

public class Login3Action {
    private Map<String,Object> request;//httpServletRequest
    private Map<String,Object> session;//httpsession
    private Map<String,Object> application;//servletContext

    //使用map的方式 只能往页面传递参数  不能像httpservletrequest httpsession 使用它们的方法
    public Login3Action(){
        request= (Map<String, Object>) ActionContext.getContext().get("request");
        session=ActionContext.getContext().getSession();
        application=ActionContext.getContext().getApplication();


    }

    public String index(){
       /* 注意:使用的是put*/
        request.put("uname","糖宝");
        session.put("usex","虫");
        return "index";
    }

}

注意:使用的是put

方式四:struts2使用map模拟的第2种方式 实现接口RequestAware,SessionAware,ApplicationAware

public class Login4Action implements RequestAware,SessionAware,ApplicationAware {
private Map<String,Object> request;
private
Map<String,Object> session;
private
Map<String,Object> application;


public
String index()
{
request.put("uname","李四");
session.put("usex","女");
return "index";
}


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

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

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




猜你喜欢

转载自blog.csdn.net/zyljjf/article/details/79817395