zoukankan      html  css  js  c++  java
  • Action的搭建及application、request、Session的运用 多种方法

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 添加测试的web资源
    11 <%
    12 application.setAttribute("app1", "测试的application")  ;
    13 application.setAttribute("app12", "测试的application2")  ;
    14 session.setAttribute("ses1", "测试的Session") ;
    15 
    16 request.setAttribute("req1", "测试的request") ;
    17 
    18 
    19 %>
    20 <br>
    21 <a href="testAction.action?user=tom" >测试Action类访问web资源</a>
    22 <br><br><br>
    23 <a href="testActionAware.action?user=tom&user=rose" >以Aware方式测试Action类访问web资源</a>
    24 <br><br><br>
    25 <a href="testServletAction.action?user=tom" >访问原生web资源</a>
    26 <br><br><br>
    27 <a href="testServletAware.action?user=tom" >以接口方式访问原生web资源</a>
    28 </body>
    29 </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    显示application的属性
    <br>
    app1=${app1 }
    <br>
    app12=${app12 }
    <br>
    appx=${applicationScope.appx }
    
    <br><br>
    
    显示Session的属性
    <br><br>
    
    ses1=${ses1 }
    <br><br>
    ses2=${ses2 }
    
    <br><br>
    req1=${req1 }
    <br><br>
    req2=${req2 }
    <br><br>
    <% 
    String user = request.getParameter("user") ;
    Object haha = session.getAttribute("ses1") ;
    out.print("user = "+user) ;
    out.print("<br><br> ") ;
    out.print("haha = "+haha.toString()) ;
    String ww = request.getParameter("ww") ;
    %>
    <br>
    <%out.print("ww= "+ww) ; %>
    </body>
    </html>

    Struts

    <?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="do,action,,"></constant>
    
        <!-- 定义包 -->
        <package name="index" extends="struts-default" namespace="">
        
                <action name="testAction" class="com.hanqi.action.TestAction" method="testWeb">
                
                        <result type="redirect">test1.jsp</result>
                
                </action>
                
                <!-- 解耦的接口方式 -->
                <action name="testActionAware" class="com.hanqi.TestActionAware" method="testAware">
                
                        <result >test1.jsp</result>
                
                </action>
        
                <!-- 以ServletActionContext方式 -->
                <action name="testServletAction" class="com.hanqi.action.TestServletAction" 
                                method="testServletAction">
                
                        <result >test1.jsp</result>
                
                </action>
        
                <action name="testServletAware" class="com.hanqi.action.TestServletActionAware"
                            method="testServletAware">
                            
                            
                            <result >test1.jsp</result>
                            
                            </action>
        
        </package>
        
    </struts>
     1 package com.hanqi.action;
     2 
     3 import javax.servlet.ServletContext;
     4 import javax.servlet.http.HttpServletRequest;
     5 import javax.servlet.http.HttpSession;
     6 
     7 import org.apache.struts2.interceptor.ServletRequestAware;
     8 import org.apache.struts2.util.ServletContextAware;
     9 
    10 public class TestServletActionAware
    11         implements ServletRequestAware, ServletContextAware {
    12 
    13     private ServletContext sc ;
    14     private HttpServletRequest hsr ;
    15     private HttpSession hs ;
    16     
    17     @Override
    18     public void setServletContext(ServletContext arg0) {
    19         // TODO 自动生成的方法存根
    20         sc = arg0 ;
    21     }
    22 
    23     @Override
    24     public void setServletRequest(HttpServletRequest arg0) {
    25         // TODO 自动生成的方法存根
    26         
    27         hsr = arg0 ;
    28         
    29         hs = arg0.getSession() ;
    30         
    31     }
    32 
    33     public String testServletAware()
    34     {
    35         System.out.println("app1 = " + sc.getAttribute("app1"));
    36         
    37         sc.setAttribute("appx", "新的app");
    38         
    39         System.out.println("ses1 = " + hs.getAttribute("ses1"));
    40         
    41         hs.setAttribute("ses2", "新的ses2");
    42         
    43         hsr.setAttribute("req2", "新的req2");
    44         
    45         System.out.println("user = " +hsr.getParameter("user"));
    46         
    47     
    48         
    49         return "success" ;
    50     }
    51     
    52     
    53 }
     1 package com.hanqi.action;
     2 
     3 import javax.servlet.ServletContext;
     4 import javax.servlet.http.HttpServletRequest;
     5 import javax.servlet.http.HttpSession;
     6 
     7 import org.apache.struts2.ServletActionContext;
     8 
     9 public class TestServletAction
    10 {
    11             
    12     public String testServletAction()
    13     {
    14         //访问原生的web资源
    15         
    16         //1得到ServletContext,相当于application 
    17         ServletContext sc = ServletActionContext.getServletContext();
    18         
    19         System.out.println("app1 = " + sc.getAttribute("app1"));
    20          
    21         sc.setAttribute("appx", "原生方式放入的内容");
    22             
    23         //2访问Session
    24         HttpServletRequest hsr = ServletActionContext.getRequest() ;
    25         
    26         HttpSession hs = hsr.getSession() ;
    27         
    28         System.out.println("ses1 = " + hs.getAttribute("ses1"));
    29         
    30         hs.setAttribute("ses2", "原生方式放入的Session");
    31         
    32         //3访问request
    33         System.out.println("req1 = " + hsr.getAttribute("req1"));
    34         
    35         hsr.setAttribute("req2", "原生方式放入的request");
    36         
    37         //4访问parameter
    38         System.out.println("user1 = " +hsr.getParameter("user") );
    39         System.out.println("user2 = " +hsr.getParameter("user") );
    40         
    41         return "success" ;
    42     }
    43 }
    package com.hanqi.action;
    
    import java.util.Map;
    
    import com.opensymphony.xwork2.ActionContext;
    
    //解耦方式
    public class TestAction 
    {
    
        //
        
        public String testWeb()
        {
            System.out.println("hah");
            
            //单例
            //Action实例的上下文对象
            ActionContext ac = ActionContext.getContext() ;
            
            //1获取application资源
            Map<String, Object> mapApp = ac.getApplication() ;
            
            System.out.println("app1 = " + mapApp.get("app1"));
            
            System.out.println("app12 = " + mapApp.get("app12"));
            
            //放入新的键值对
            mapApp.put("appx", "新放入的application") ;
            
            
            //2.获取Session的资源
            Map<String, Object> mapses = ac.getSession() ;
            
            System.out.println("ses1=" + mapses.get("ses1"));
            
            //放入新的键值对
            mapses.put("ses2", "新放入的session") ;
            
            //移除
            mapses.remove("ses1") ;
            
            
            //3获取request资源
            Map<String, Object> mapreq = (Map<String, Object>) ac.get("request");
            
            System.out.println("req1 = " + mapreq.get("req1"));
            
            //放入新的键值对
            mapreq.put("req2", "新放入的request") ;
            
            
            //4直接获取传递的参数
            Map<String, Object> mappar = ac.getParameters() ;
            
            //参数值被封装成String数组
            String[ ] array = (String[ ])mappar.get("user") ;
        
            for(String s : array)
            {
                System.out.println("user = " + s);
            }
            
            //放入
            mappar.put("ww", new String[ ]{("qweqeq")}) ;
            
            return "success" ;
        }
        
    }
    package com.hanqi;
    
    import java.util.Map;
    
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.ParameterAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;
    
    public class TestActionAware implements ApplicationAware , SessionAware, RequestAware, ParameterAware{
    
        private Map<String, Object> mapApp ;
        private Map<String, Object> mapses ;
        private Map<String, Object> mapreq ;
        private Map<String, String[ ]> mappar ;
        
        //实现ApplicationAware接口的方法
        //提供给Struts2进行调用 , 放入Application的数据集合
        @Override
        public void setApplication(Map<String, Object> arg0) {
            // TODO 自动生成的方法存根
    
            //接收
            mapApp = arg0 ;
            
        }
    
        
        public String testAware()
        {
            
            //1访问application
            System.out.println("app1 = " + mapApp.get("app1"));
            
            mapApp.put("app12", "以Aware方式放入的application") ;
            
            //2访问Session
            //System.out.println("ses1 = " + mapses.get("ses1"));
            
            mapses.put("ses2", "以Aware方式放入的Session") ;
            
            //3访问request
            System.out.println("req1 = " + mapreq.get("req1"));
            
            mapreq.put("req2", "以Aware方式放入的request") ;
            
            //4 访问Parameter
            String[ ] str = mappar.get("user") ;
            for(String t : str)
            {
                    System.out.println("user = " + t);
            }
            return "success" ;
        }
    
    
        @Override
        public void setSession(Map<String, Object> arg0) {
            // TODO 自动生成的方法存根
            
            mapses = arg0 ;
            
        }
    
    
        @Override
        public void setRequest(Map<String, Object> arg0) {
            // TODO 自动生成的方法存根
            mapreq = arg0 ;
        }
    
    
        @Override
        public void setParameters(Map<String, String[]> arg0) {
            // TODO 自动生成的方法存根
            mappar = arg0 ;
        }
        
    }
  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/20gg-com/p/6071086.html
Copyright © 2011-2022 走看看