zoukankan      html  css  js  c++  java
  • struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素

    源码:

    strust.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>
    	<constant name="struts.action.extension" value="action,do," />
    	<constant name="struts.devMode" value="true" />
    	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
    
    
    	<package name="default" namespace="/" extends="struts-default">
    		<default-action-ref name="default" />
    
    		<action name="test1" class="org.Test.action.TestAction1"
    			method="test">
    			<result>/success.jsp</result>
    		</action>
    		
    		<action name="test2" class="org.Test.action.TestAction2"
    			method="test">
    			<result>/success.jsp</result>
    		</action>
    
    		<action name="default">
    			<result>/index.jsp</result>
    		</action>
    	</package>
    </struts>


    success.jsp

    <span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>成功</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">
    
    </head>
    
    <body>
    	${requestScope.name}
    	${sessionScope.name}
    	${applicationScope.name}
    	<br>
    </body>
    </html></span>



    方法一:通过ActionContext来訪问

    TestAction1.java

    package org.Test.action;
    
    import java.util.Map;
    
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    public class TestAction1 extends ActionSupport {  
    	private Map<String, Object> request;
    	private Map<String, Object> session;
    	private Map<String, Object> application;
    	
    	
    	public TestAction1() {
    		this.request = (Map)ActionContext.getContext().get("request");
    		this.session = (Map)ActionContext.getContext().getSession();
    		this.application = (Map)ActionContext.getContext().getApplication();
    	}
    
    	public String test() {
    		System.out.println("TestAction1:test");
    		this.request.put("name", "张三");
    		this.session.put("name", "李四");
    		this.application.put("name", "王五");
    		return SUCCESS;
    	}
    
    }


    执行结果:




    说明:

    1.TestAction1的

    类中:定义Map类型的request,session,application对象

    构造方法中:通过ActionContext获取这三个对象

    test()方法中:用put方法设置属性

    2.success.jsp:通过EL语言查看request,session,application对象的name属性的值



    方法二:IOC(控制反转)。通过实现接口RequestAware,SessionAware, ApplicationAware来訪问

    TestAction2.java

    package org.Test.action;
    
    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 TestAction2 extends ActionSupport implements RequestAware,
    		SessionAware, ApplicationAware {
    	private Map<String, Object> request;
    	private Map<String, Object> session;
    	private Map<String, Object> application;
    	
    	@Override
    	public void setApplication(Map<String, Object> application) {
    		this.application = application;
    	}
    
    	@Override
    	public void setSession(Map<String, Object> session) {
    		this.session = session;
    	}
    
    	@Override
    	public void setRequest(Map<String, Object> request) {
    		this.request = request;
    	}
    
    	public String test() {
    		System.out.println("TestAction2:test");
    		this.request.put("name", "小明");
    		this.session.put("name", "小华");
    		this.application.put("name", "小王");
    		return SUCCESS;
    	}
    
    }

    执行结果:



    说明:

    1.把三个set方法传过来的request,session.application值,赋给我们的request,session.application对象。即通过调用set方法来实例化这三个对象,而TestAction2本身并没有对三个对象进行实例化

  • 相关阅读:
    html基础起航
    必杀技———SQL基础整理系列(一)
    JavaScript代码段整理笔记系列(一)
    与JSP的初次邂逅……
    产品第二篇
    产品第一篇
    进程在后台可靠运行的几种方法
    Vue.js模板语法
    更靠谱的横竖屏检测方法
    浮动【电梯】或【回到顶部】小插件:iElevator.js
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5267886.html
Copyright © 2011-2022 走看看