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 ;
        }
        
    }
    复制代码
  • 相关阅读:
    HIDS逐渐的成为主流 java程序员
    怎样做反向域名解析(反向DNS解析)? java程序员
    入侵检测系统的性能的辨别(2) java程序员
    Codeforces Round #146 (Div. 2)
    usaco1.34Prime Cryptarithm
    poj3667 hotel(线段树区间合并)
    poj1330Nearest Common Ancestors(水LCA)
    hdu4135Coprime(容斥原理)
    hdu1541Stars(树状数组)
    usaco 1.43Arithmetic Progressions
  • 原文地址:https://www.cnblogs.com/smile-dream/p/6108493.html
Copyright © 2011-2022 走看看