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

相关文章
|
1月前
|
前端开发
Web前端开发------网页分组元素
Web前端开发------网页分组元素
23 0
|
2月前
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
163 0
|
1月前
|
安全 测试技术 API
请描述在 Python WEB 开发中常用的测试方法。
请描述在 Python WEB 开发中常用的测试方法。
18 0
|
1月前
|
Windows
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
56 2
|
2月前
|
关系型数据库 MySQL 应用服务中间件
【IIS搭建网站】在本地电脑上搭建web服务器并实现外网访问
在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类,为方便用户使用,还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务,都是为了方便我们能快速建立网站。是不是不适用这些软件就无法建立网站了呢?答案当然是否定的,在Windows系统中实际上集成了建立网站所必须的软件环境。今天就让我们来看看,如何使用Windows自带的网站程序建立网站吧。
|
19天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
30天前
|
Web App开发 前端开发 开发工具
介绍Web开发的基础知识
介绍Web开发的基础知识
29 7
|
5天前
|
JSON Java fastjson
Spring Boot 底层级探索系列 04 - Web 开发(2)
Spring Boot 底层级探索系列 04 - Web 开发(2)
15 0
|
5天前
|
安全 编译器 PHP
PHP 8.1版本发布:引领Web开发新潮流
PHP编程语言一直是Web开发的主力军,而最新发布的PHP 8.1版本则为开发者们带来了更多创新和便利。本文将介绍PHP 8.1版本的主要特性,包括更快的性能、新的语言功能和增强的安全性,以及如何利用这些功能来提升Web应用程序的质量和效率。