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

相关文章
|
2天前
|
开发框架 .NET PHP
Web服务搭建&站库分离&路由访问
Web服务搭建&站库分离&路由访问
|
1月前
|
前端开发
|
15天前
|
移动开发 前端开发 数据安全/隐私保护
Web网页制作-知识点(2)——常用文本标签、列表标签、表格标签、Form表单、块元素与行内元素(内联元素)
Web网页制作-知识点(2)——常用文本标签、列表标签、表格标签、Form表单、块元素与行内元素(内联元素)
6 0
|
1月前
|
JavaScript 前端开发 架构师
Web Components:自定义元素与Shadow DOM的实践
Web Components是用于创建可重用自定义HTML元素的技术集合,包括Custom Elements、Shadow DOM、HTML Templates和Slots。通过Custom Elements定义新元素,利用Shadow DOM封装私有样式,&lt;slot&gt;元素允许插入内容。自定义元素支持事件处理和属性观察,可复用且样式隔离。它们遵循Web标准,兼容各前端框架,注重性能优化,如懒加载和Shadow DOM优化。
24 0
|
1月前
|
网络协议 网络虚拟化
网工配置命令总结(1)---Web访问及vlan配置
网工配置命令总结(1)---Web访问及vlan配置
25 0
|
1月前
【计网·湖科大·思科】实验一 熟悉仿真软件及访问WEB服务器
【计网·湖科大·思科】实验一 熟悉仿真软件及访问WEB服务器
26 0
|
9天前
|
传感器 小程序 搜索推荐
(源码)java开发的一套(智慧校园系统源码、电子班牌、原生小程序开发)多端展示:web端、saas端、家长端、教师端
通过电子班牌设备和智慧校园数据平台的统一管理,在电子班牌上,班牌展示、学生上课刷卡考勤、考勤状况汇总展示,课表展示,考场管理,请假管理,成绩查询,考试优秀标兵展示、校园通知展示,班级文化各片展示等多种化展示。
34 0
(源码)java开发的一套(智慧校园系统源码、电子班牌、原生小程序开发)多端展示:web端、saas端、家长端、教师端
|
16天前
|
关系型数据库 MySQL PHP
PHP的生命周期:从诞生到现代Web开发
本文将探索PHP的发展历程,从其最初的设计目标到成为现代Web开发的核心语言。我们将深入了解PHP如何适应不断变化的技术环境,并保持其在开发者社区中的受欢迎程度。
|
7天前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
3天前
|
前端开发 JavaScript PHP
PHP与现代Web开发:探索PHP的持续演变
在动态Web开发的舞台上,PHP一直是一个不可或缺的角色。从早期的简单个人网页到复杂的企业级应用,PHP经历了无数次变革,以适应不断变化的技术需求。本文将带您了解PHP如何保持其在Web开发中的核心地位,以及它如何应对新兴技术的挑战。