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,如需转载请自行联系原作者

相关文章
|
11天前
|
前端开发 JavaScript 持续交付
Web应用开发的方法
Web应用开发的方法
13 1
|
19天前
|
前端开发
震惊!Web 前端行内元素和块级元素的 “巅峰对决”,究竟谁能主宰页面布局?
【8月更文挑战第26天】在Web前端开发中,掌握行内元素与块级元素的区别十分重要。块级元素如`&lt;p&gt;`、`&lt;div&gt;`等,特性为自动换行并可设置宽高;而行内元素如`&lt;span&gt;`则在同一行显示且无法直接设置宽高。二者默认样式亦不同,但可通过CSS调整显示方式,灵活应用于页面布局设计中,实现更优视觉效果。
30 1
|
14天前
|
Java 数据库连接 数据库
强强联手!JSF 与 Hibernate 打造高效数据访问层,让你的应用如虎添翼,性能飙升!
【8月更文挑战第31天】本文通过具体示例详细介绍了如何在 JavaServer Faces (JSF) 应用程序中集成 Hibernate,实现数据访问层的最佳实践。首先,创建一个 JSF 项目并在 Eclipse 中配置支持 JSF 的服务器版本。接着,添加 JSF 和 Hibernate 依赖,并配置数据库连接池和 Hibernate 配置文件。然后,定义实体类 `User` 和 DAO 类 `UserDAO` 处理数据库操作。
37 0
|
14天前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
40 0
|
21天前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
21天前
|
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的错误
|
21天前
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
|
13天前
|
数据库 开发者 Python
web应用开发
【9月更文挑战第1天】web应用开发
33 1
|
1天前
|
数据可视化 图形学 UED
只需四步,轻松开发三维模型Web应用
为了让用户更方便地应用三维模型,阿里云DataV提供了一套完整的三维模型Web模型开发方案,包括三维模型托管、应用开发、交互开发、应用分发等完整功能。只需69.3元/年,就能体验三维模型Web应用开发功能!
17 8
只需四步,轻松开发三维模型Web应用
|
10天前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践