Struts2框架之Action动作类获取Servlet的API

①通过"org.apache.struts2.ServletActionContext"可以获取到:

"struts.xml"配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 
            修改"struts.action.extension"属性
      "struts.devMode"包含了"struts.configuration.xml.reload"的功能
     -->
    <constant name="struts.action.extension" value="do,,"></constant>
    <constant name="struts.devMode" value="true"></constant>
    
    <package name="hello1" extends="struts-default" namespace="/hello1">
        <action name="test1" class="com.rl.action.HelloAction" method="hello1">
            <result name="success">/success.jsp</result>
        </action>
    </package>
</struts>

动作类代码:

package com.rl.action;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport{
    
    public String hello1(){
        
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        HttpSession session = request.getSession();
        //3种方法都可以获取"ServletContext"的域对象
        ServletContext context1 = session.getServletContext();
        ServletContext context2 = request.getServletContext();
        ServletContext context3 = ServletActionContext.getServletContext();
        
        System.out.println(request);
        System.out.println(response);
        System.out.println(session);
        System.out.println(context1);
        System.out.println(context2);
        System.out.println(context3);
        return SUCCESS;
    }
}

控制台输出:

org.apache.struts2.dispatcher.StrutsRequestWrapper@ea3111
org.apache.catalina.connector.ResponseFacade@13b735c
org.apache.catalina.session.StandardSessionFacade@129da5
org.apache.catalina.core.ApplicationContextFacade@2beffd
org.apache.catalina.core.ApplicationContextFacade@2beffd
org.apache.catalina.core.ApplicationContextFacade@2beffd

②通过实现接口"org.apache.struts2.interceptor.ServletRequestAware"和"org.apache.struts2.interceptor.ServletResponseAware"的方式来获取Servlet的API

"struts.xml"配置文件:

<package name="hello1" extends="struts-default" namespace="/hello1">
        <action name="test1" class="com.rl.action.HelloAction" method="hello1">
            <result name="success">/success.jsp</result>
        </action>
        <action name="test2" class="com.rl.action.HelloAction2" method="hello2">
            <result name="success">/success.jsp</result>
        </action>
    </package>

动作类代码:

package com.rl.action;

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

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction2 extends ActionSupport implements ServletRequestAware, ServletResponseAware{
    
    HttpServletRequest request;
    
    HttpServletResponse response;
    
    public String hello2(){
        System.out.println(request);
        System.out.println(request.getSession());
        System.out.println(response);
        System.out.println(request.getServletContext());
        
        //传参也是能够接收到的
        System.out.println(request.getParameter("name"));
        return SUCCESS;
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }

    @Override
    public void setServletResponse(HttpServletResponse response) {
        this.response = response;
    }
}

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值