struts2 访问Web元素的4种方法

简介:

完整代码 :Struts12AccessWebElement.rar

第一种也是最常用的一种方法实现这几个接口

RequestAware,SessionAware,ApplicationAware

struts以依赖注入方式把request,session和application赋上值,看一下完整的代码

复制代码
package com.pengli.struts.parampack;

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.ActionSupport;

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

    static int actionCount=0;
    private Map<String, Object> my_Request;
    private Map<String, Object> session;
    private Map<String, Object> application;
    
    
    public String add()
    {
        AddKey();
        return "add";
    }
    
    @Override
    public void setRequest(Map<String, Object> arg0) {
        // TODO Auto-generated method stub
        my_Request=arg0;
    }

    @Override
    public void setApplication(Map<String, Object> arg0) {
        // TODO Auto-generated method stub
        application=arg0;
    }

    @Override
    public void setSession(Map<String, Object> arg0) {
        // TODO Auto-generated method stub
        session = arg0;
    }

    private void AddKey()
    {

        ++actionCount;
        my_Request.put("a1", "Two"+actionCount);

        ++actionCount;
        session.put("a2", "Two"+actionCount);

        ++actionCount;
        application.put("a3", "Two"+actionCount);
    }
    
}
复制代码

第二种方式是实现ServletRequestAware接口

得到request接口后,再根据 request的方法去得到session和application

复制代码
package com.pengli.struts.parampack;

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

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;

public class MyWinAction3 extends ActionSupport implements ServletRequestAware {

    private HttpServletRequest request;    
    private HttpSession session;
    private ServletContext application;
    
    public String add()    {
        setAttribute();
        return "add";
    }
    
    @Override
    public void setServletRequest(HttpServletRequest arg0) {
        // TODO Auto-generated method stub
        request=arg0;
        session=request.getSession();
        application=session.getServletContext();
        
    }
    
    
    
    private void setAttribute()    {
        request.setAttribute("a1", "ThreeA1");
        session.setAttribute("a2", "ThreeA2");
        application.setAttribute("a3", "ThreeA3");
    }

}
复制代码

第三种方式和第二种有点像,是用ServletActionContext得到request再得到sesion和application

复制代码
package com.pengli.struts.parampack;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class MyWinAction4 extends ActionSupport{

    private HttpServletRequest request;    
    private HttpSession session;
    private ServletContext application;
    
    public String add(){
        
        getInfo();
        setAttribute();
        
        return "add";
    }
    
    private void getInfo()
    {
        request = ServletActionContext.getRequest();
        session = request.getSession();
        application = session.getServletContext();
    }
    
    private void setAttribute()
    {
        request.setAttribute("a1", "FourA1");
        session.setAttribute("a2", "FourA2");
        application.setAttribute("a3", "FourA3");
    }
}
复制代码

最后一种方法是通过ActionContext得到相应的参数

 

复制代码
package com.pengli.struts.parampack;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class MyWiAction extends ActionSupport {
    
    private UserModel user;
    public  String add1()
    {
        if(user == null)
        {
            this.addFieldError("user", "user object is null");
            return ERROR;
        }
        if(user.getName()== null||user.getAge() == null)
        {
            this.addFieldError("name", "name is null");
            this.addFieldError("age", "age is null");
            return ERROR;
        }
        System.out.println(user.getAge());
        System.out.println(user.getName());
        return "add1";
    }
    static int actionCount=0;
    private Map request1;
    private Map session1;
    private Map application1;
    
    public String add()
    {
        request1 = (Map)ActionContext.getContext().get("request");
        session1=ActionContext.getContext().getSession();
        application1 = ActionContext.getContext().getApplication();
        
        AddKey();
        
        return "add";
    }
    
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        
        return super.execute();
    }
    
    public String add2()
    {
        return "add2";
    }
    
    public String add3() 
    {
        return "add3";
    }
    
    
    private void AddKey()
    {

        ++actionCount;
        request1.put("a1", "a1haha"+actionCount);
    
        ++actionCount;
        session1.put("a2", "a2haha"+actionCount);
    
        ++actionCount;
        application1.put("a3", "a3haha"+actionCount);

    }
    public String edit()
    {
        return "edit";
    }

    public UserModel getUser() {
        return user;
    }

    public void setUser(UserModel user) {
        this.user = user;
    }
}
复制代码

再看一下web页面如何访问这些元素

复制代码
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'Oneaddok.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>
    This is my JSP page. <br>
    <s:property value="#request.a1" />|<%= request.getAttribute("a1") %> <br/>
    <s:property value="#session.a2" />|<%= session.getAttribute("a2") %> <br/>
    <s:property value="#application.a3" />|<%= application.getAttribute("a3") %> <br/>
  </body>
</html>
复制代码

再看一下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>
    <!-- Add packages here -->
     <constant name="struts.devMode" value="true" />
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    <package name="default1" namespace="/" extends="struts-default">        
        <action name="One*1" class="com.pengli.struts.parampack.MyWiAction" method="{1}">
            <result name ="{1}">
                /Oneaddok.jsp
            </result>        
            <result name="error">
                /errorpage.jsp
            </result>    
        </action>
        <action name="One*2" class="com.pengli.struts.parampack.MyWinAction2" method="{1}">
            <result name ="{1}">
                /Oneaddok.jsp
            </result>        
            <result name="error">
                /errorpage.jsp
            </result>    
        </action>
        <action name="One*3" class="com.pengli.struts.parampack.MyWinAction3" method="{1}">
            <result name ="{1}">
                /Oneaddok.jsp
            </result>        
            <result name="error">
                /errorpage.jsp
            </result>    
        </action>
        <action name="One*4" class="com.pengli.struts.parampack.MyWinAction4" method="{1}">
            <result name ="{1}">
                /Oneaddok.jsp
            </result>        
            <result name="error">
                /errorpage.jsp
            </result>    
        </action>
    </package>
</struts>
复制代码

 

完整代码 :Struts12AccessWebElement.rar

 

 本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/3787603.html,如需转载请自行联系原作者

相关文章
|
5天前
|
前端开发
震惊!Web 前端行内元素和块级元素的 “巅峰对决”,究竟谁能主宰页面布局?
【8月更文挑战第26天】在Web前端开发中,掌握行内元素与块级元素的区别十分重要。块级元素如`&lt;p&gt;`、`&lt;div&gt;`等,特性为自动换行并可设置宽高;而行内元素如`&lt;span&gt;`则在同一行显示且无法直接设置宽高。二者默认样式亦不同,但可通过CSS调整显示方式,灵活应用于页面布局设计中,实现更优视觉效果。
20 1
|
7天前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
7天前
|
API
【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
|
7天前
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
|
8天前
|
JSON 数据格式
【应用服务 App Service】在Azure Web App的部署文件中,是否可以限制某些文件无法被访问?(如json)
【应用服务 App Service】在Azure Web App的部署文件中,是否可以限制某些文件无法被访问?(如json)
|
前端开发 程序员 Android开发
好程序员web前端培训分享HTML元素强制不换行
好程序员web前端培训分享HTML元素强制不换行,HTML 中 nowrap是用来强制不换行的   在排版中   对包裹plain text的标签使用nowrap属性即刻实现强制不换行.   如:   强制不换行   强制不换行   在使用div的超文本中   把div,h1,section,na...
1287 0
|
11天前
|
JSON 前端开发 JavaScript
|
3天前
|
前端开发 JavaScript Serverless
Python+Dash快速web应用开发:回调交互篇(上)
Python+Dash快速web应用开发:回调交互篇(上)
|
3天前
|
前端开发 JavaScript 数据可视化
Python+Dash快速web应用开发——基础概念篇
Python+Dash快速web应用开发——基础概念篇
|
3天前
|
前端开发 Python 容器
Python+Dash快速web应用开发:静态部件篇(下)
Python+Dash快速web应用开发:静态部件篇(下)
下一篇
云函数