ytech

          學習JAVA, Hello World!

          常用鏈接

          統計

          最新評論

          2005年11月30日 #

          一段JSTL Iteration 的代碼

           

           1<%@ page import="java.util.List" %>
           2<%@ page import="java.util.ArrayList" %>
           3<%@ page contentType="text/html;charset=UTF-8" language="java" %>
           4<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
           5<html>
           6<head><title>Hello</title></head>
           7
           8<body>
           9<pre>
          10    Hello world this is the JSTL Test Page
          11</pre>
          12<%!
          13    public class Person {
          14        public Person(String name, String mGender, String address) {
          15            this.name = name;
          16            this.mGenderr = mGender;
          17            this.address = address;
          18        }
          19
          20        public String getName() {
          21            return name;
          22        }
          23
          24        public void setName(String name) {
          25            this.name = name;
          26        }
          27
          28        public String getGender() {
          29            return mGenderr;
          30        }
          31
          32        public void setGender(String mGenderr) {
          33            this.mGenderr = mGenderr;
          34        }
          35
          36        public String getAddress() {
          37            return address;
          38        }
          39
          40        public void setAddress(String address) {
          41            this.address = address;
          42        }
          43
          44        private String name;
          45        private String mGenderr;
          46        private String address;
          47
          48    }
          49
          50
          %>
          51<%
          52
          53    ArrayList a = new ArrayList();
          54    List b = new ArrayList();
          55    a.add(new Person("micas""male""xian"));
          56    a.add(new Person("nancy""female""shanghai"));
          57    a.add(new Person("nancy""female""shanghai"));
          58    a.add(new Person("nancy""female""shanghai"));
          59    a.add(new Person("nancy""female""shanghai"));
          60
          61    b.add("a");
          62    b.add("b");
          63    b.add("c");
          64    b.add("d");
          65    b.add("e");
          66
          67
          68    request.setAttribute("persons", a);
          69    request.setAttribute("otherInfo", b);
          70
          %>
          71
          72<table>
          73    <c:forEach items="${persons}" var="p" varStatus="status">
          74        <tr><td>${otherInfo[status.index]}</td><td>${status.index}</td><td>${p.name}</td><td>${p.address}</td>
          75            <td>${p.gender}</td></tr>
          76    </c:forEach>
          77</table>
          78
          79
          80</body>
          81</html>

          posted @ 2005-11-30 16:17 Java 的學習之路 閱讀(395) | 評論 (0)編輯 收藏

          2005年11月24日 #

          轉發: J2EE1.4新特性之Servlet2.4新特性

          http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=125&threadID=13086 

          在J2EE1.4最新的Servlet 2.4版中,加入了一些新的功能,下面我們介紹其中主要的常用功能。

          1、XML Schema定義Web查詢部署描述文件

          Servlet 2.3之前的版本使用DTD作為部署描述文件的定義,其web.xml的格式為如下所示:

          <?xml version="1.0" encoding="IS0-8859-1"?>
          <!DOCTYPE web-app
              PUBLIC "-//sunMicrosystems,Inc.//DTD WebApplication 2.3f//EN"
              "http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
              <web-app>
               .......
              </web-app>



          Servlet 2.4版首次使用XML Schema定義作為部署描述文件,這樣Web容器更容易校驗web.xml語法。同時XML Schema提供了更好的擴充性,其web.xml中的格式如下所示:

          <?xml version="1.0" encoding="UTF-8"?>
              <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
                    xmlns:workflow="http://www.workflow.com"
                    xmins:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
              http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
              .........
              </web-app>



          雖然上面顯示兩個版本的開頭幾行有差別,Servlet 2.4版程序web.xml中Web構件的設置方法和Servlet 2.3版大致相同。

          2、Servlet Request監聽器

          Servlet 2.4版在事件監聽器中加入了ServletRequest監聽器,包括:ServletRequestListener,ServletRequestAttributeListener和其他相關類。這些類可以用來管理和控制與ServletRequest動作有關的事件。下面的程序顯示了一個典型的ServletRequest監聽器的結構。

          import javax.setvlet.ServletContext;
              import javax.servlet.ServletRequestListener;
              import javax.servlet.ServletRequestAttributeListener;
              import javax.servlet.http.HttpServletRequest;
              import iava.io.*;
              import java.util.Locale;
              public final class RequestListener  implements   SerVletRequestListener,
              ServletRequestAttributeListener,ServletContextListener{
                  ........
          public void requestlnitialized(javax.servlet.ServletRequestEvent event){
                  ........
                  }
          public void attributeAdded(javax.servlet.ServletRequestAttributeEvent event){
                  ........
                  }
          public void attributeRemoved(javax.servlet.ServletRequestAttributeEvent event){
                  ........
                  }
          public void attributeReplaced(javax.servlet.ServletRequestAttributeEvent event){
                  ........
                  }
          public void attributeDestroyed(javax.servlet.ServletRequestAttributeEvent event){
                 ........
                 }
              }



          3、 Request Dispatcher變化

          Servlet 2.4版的Web程序增強了filter和request dispatcher的配合功能,這樣過濾器可以根據請求分發器(request dispatcher)所使用的方法有條件地對Web請求進行過濾。編程者可以通過在web.xml中使用元素設定過濾器作用的條件(下圖1):




          圖1 設定元素的過濾器


          ·只有當request直接來自客戶,過濾器才生效,對應為REQUEST條件。

          ·只有當request被一個請求分發器使用forward()方法轉到一個Web構件時(采用或定義),對應稱為FORWARD條件。

          ·類似地,只有當request被一個請求分發器使用include()方法轉到一個Web構件時(采用或定義),對應稱為INCLUDE條件。

          ·只有當request被一個請求分發器使用“錯誤信息頁”機制方法轉到一個Web構件時,對應稱為ERROR條件。

          ·第五種過濾器作用的條件可以是上面四種條件的組合。

          下面的程序中的定義了當客戶請求/icsamples/* 樣式的URL時,Security Filter會被用來過濾請求。但是如果到達URL為/icsamples/* 的Web構件的請求是從一個request dispatcher轉發過來的,這個過濾器不工作。

          <filter-mapping>
              <filter-name>Security Filter</filter-name>
              <url-pattern>/icsamples/*</url-pattern>
              </filter-mapping>



          如果使用下面的程序設置,在中加入INCLUDE,Security Filter只有在被一個request dispatcher使用include()方法包括RequestRecorderServlet時才會工作。在其他情況(如請求直接從客戶發來,或request dispatcher使用forward方法)下,Security Filter都不會工作。

          <filter-mapping>
              <fliter-name>Security Filter</filter-name>
              <servlet-name>RequestRecorderServlet</servlet-name>
              <dispatcher>INCLUDE</dispatcher>
              </filter-mapping>



          下面的程序設置定義了Security Filter當request由客戶直接發出或request

          dispatcher使用forward方法時能工作。

          <filter-mapping>
              <filter-name>Security Filter</filter-name>
              <url-pattern>/icsamples/*</uri-pattern>
              <dispatcher>FORWARD</dispatcher>
              <dispatcher>REQUEST</dispatcher>
              </filter-mapping>



          程序例6顯示了一個在中使用的例子。程序7定義的ReqDispatcherServlet根據用戶請求的參數"type",決定如何處理請求。在其中使用了兩個RequestDispatcher(rd,和rd2),它們可以向URL為/admin或/control的servlet轉發請求。當請求被轉發后,適當的過濾器會起作用。過濾器和Web資源的關系可以在web.xml中定義。如果用戶輸入的Web請求參數為“INCLUDE”,ReqDispatcherServlet的RequestDispatcher會調用include 方法,這樣DispatcherFilterIcd會被使用,因為在定義了INCLUDE;如果用戶輸入的 Web請求參數為“ERROR”ReqDispatcherServlet會調用resp.sendError()方法,這樣DispatcherFilterErr會被使用,因為在定義了ERROR。

          例6:

          <filter-mapping>
              <filter-name>DispatcherFilterIcd</filter-name>
              <url-pattern>/admin</url-pattern>
              <dispatcher>INCLUDE</dispatcher>
              </filter-mapping>
              <filter-mapping>
              <filter-name>DispatcherFilterErr</filter-name>
              <url-pattern>/errorpage</url-pattern>
              <dispatcher>ERROR</dispatcher>
              </filter-mapping>



          例7:

          import javax.servlet.*;
              import javax.servlet.http.*;
              import java.io.*;
              import java.util.*;

              public class ReqDispatcherServlet extends HttpServlet
              {
              String dispatchtype;
              public void init(ServletConfig config) throws ServletException
              {
              super.init(config);
              }
              public void service(HttpServletRequest req,HttpServletResponse resp)
              throws ServletException,IOException
              {
              PrintWriter out=resp.getWriter();
              String type="NONE";
              if((req.getParameter("type"))!=null)
              {
              type = req.getParameter("type");
              }
                  resp.setContentType("text/html");
                  out.println("<HTML>");
                  out.println("<BODY>");
          out.println("<HR>");
          out.println("<p>");
              out.println("ReqDispacherServelt");
              out.println("</P><p>");
              out.println("ServerName:"+req.getServerName()+"ServerPort:"+
          req.getServerPort());   
              out.println("</p>");
              RequestDispatcher rd=req.getRequestDispatcher("/admin");
              RequestDispatcher rd2=req.getRequestDispatcher("/control");
              if(type.equals("REQUEST"))
              {
              }
              if(type.equals("FORWARD"))
               {   
              rd.forward(reg,resp);
               }
              if(type.equals("INCLUDE"))
              {
              rd.include(req,resp);
                }
              if(type.equals("ERROR"))
               {
              resp.sendError(404,"Error from ReqDispacherServlet");
               }
              if(type.equals("CONTROL"))
               {
              rd2.forward(req,resp);
               }
              out.flush();
              }
              public voiddestroy()
              {
              System.out.println("ReqDispacherServlet:destroy()");
               }
              }



          4、 增強的國際化功能

          Servlet 2.4增加了Web程序國際化功能,在web.xml中可以定義網站的字符編碼方式。

          <locale-encoding-mapping-list>
              <locale-encoding-mapping>
              <locale>zh</locale>
              <encoding>gb2312</encoding>
              </locale-encoding-mapping>
              </locale-encoding-mapping-list>



          當客戶請求了特定語言的Web資源時,servlet程序通過ServletResponse接口的setLocale方法設置一個Web響應的語言屬性。

          5、 Login/Logout功能

          在Servlet 2.4中增加了logout和login方法方便安全管理。大家可以參考Servlet 2.4的API查看其用法。

          posted @ 2005-11-24 04:08 Java 的學習之路 閱讀(467) | 評論 (0)編輯 收藏

          2005年11月22日 #

          J2EE Filter 的幾種用法

          1。 利用Struts 進行賬戶權限管理


          這里只有一個com.micas.utils.test.MyFilter定義,但是在web app啟動實例化了2個instance,分別讀入2個參數。并且,指定了觸發著兩個instance的uri 的mapping.

           1 <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
           2          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           3          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
           4          version="2.4">
           5 
           6     <servlet>
           7         <servlet-name>action</servlet-name>
           8         <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
           9         <init-param>
          10             <param-name>config</param-name>
          11             <param-value>/WEB-INF/struts-config.xml
          12             </param-value>
          13         </init-param>
          14     </servlet>
          15 
          16     <!-- Action Servlet Mapping -->
          17     <servlet-mapping>
          18         <servlet-name>action</servlet-name>
          19         <url-pattern>*.do</url-pattern>
          20     </servlet-mapping>
          21 
          22 
          23     <display-name>pogo</display-name>
          24 
          25     <filter>
          26         <filter-name>patGeneral</filter-name>
          27         <filter-class>com.micas.utils.test.MyFilter</filter-class>
          28         <init-param>
          29             <param-name>role</param-name>
          30             <param-value>general</param-value>
          31         </init-param>
          32     </filter>
          33 
          34     <filter>
          35         <filter-name>patManager</filter-name>
          36         <filter-class>com.micas.utils.test.MyFilter</filter-class>
          37         <init-param>
          38             <param-name>role</param-name>
          39             <param-value>manager</param-value>
          40         </init-param>
          41     </filter>
          42 
          43     <filter-mapping>
          44         <filter-name>patManager</filter-name>
          45         <url-pattern>/view/pat/manager/*</url-pattern>
          46     </filter-mapping>
          47 
          48     <filter-mapping>
          49         <filter-name>patGeneral</filter-name>
          50         <url-pattern>/view/pat/general/*</url-pattern>
          51     </filter-mapping>
          52 
          53 
          54 </web-app>

          MyFilter 代碼如下:
           1 package com.micas.utils.test;
           2 
           3 
           4 import javax.servlet.Filter;
           5 import javax.servlet.FilterChain;
           6 import javax.servlet.FilterConfig;
           7 import javax.servlet.ServletException;
           8 import javax.servlet.ServletRequest;
           9 import javax.servlet.ServletResponse;
          10 import javax.servlet.http.HttpServletRequest;
          11 import java.io.IOException;
          12 
          13 
          23 public class MyFilter implements Filter
          24 {
          25     private String role;
          26 
          27     public void init(FilterConfig config) throws ServletException
          28     {
          29          role = config.getInitParameter("role");
          30         System.out.println("role is "+role);
          31         config.getServletContext().setAttribute("test",role);
          32 
          33     }
          34 
          35     public void doFilter(ServletRequest request, ServletResponse response,
          36             FilterChain chain)
          37             throws IOException, ServletException
          38     {
          39 
          40         if("manager".equalsIgnoreCase(role)){
          41             System.out.println("you are in as a manager");
          42         }
          43         else if("general".equalsIgnoreCase(role)){
          44             System.out.println("you are in as general");
          45         }
          46         else{
          47             System.out.println("something not right");
          48         }
          49         HttpServletRequest hRequest = (HttpServletRequest)request;
          50         System.out.println("the file sends the request is "+hRequest.getRequestURI());
          51         chain.doFilter(request, response);
          52     }
          53 
          54     public void destroy()
          55     {
          56     }
          57 }
          58 

          posted @ 2005-11-22 06:30 Java 的學習之路 閱讀(3908) | 評論 (0)編輯 收藏

          Struts 的幾種Action

          1. 直接轉發
           1<?xml version="1.0" encoding="ISO-8859-1"?>
           2
           3<!DOCTYPE struts-config PUBLIC
           4          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
           5          "http://struts.apache.org/dtds/struts-config_1_2.dtd">
           6
           7<struts-config>
           8
           9
          10    <action-mappings>
          11        <action path="/view/pat/general/test2" forward="/view/pat/test2.jsp" />
          12        <action path="/view/pat/manager/test1" forward="/view/pat/test1.jsp" />
          13        <action path="/view/pat/general/test3" parameter="/view/pat/test2.jsp" type="org.apache.struts.actions.ForwardAction">
          14        </action>        
          15    </action-mappings>
          16
          17</struts-config>
          18

          11,12 行,簡單的寫法,直接將請求/view/pat/manager/test1.do 轉發至/view/pat/test1.jsp
          13, 也是一種標準寫法。


          ===未完待續

          posted @ 2005-11-22 06:20 Java 的學習之路 閱讀(498) | 評論 (0)編輯 收藏

          2005年11月11日 #

          使用IntelliJ調試JSP

           

           
          今天終于成功地使用了IntelliJ 5.0的調試jsp的功能,以后再也不用在jsp頁面寫輸出語句來看結果了。
           
          步驟如下:打開遠程的tomcat以調試模式打開:catalina.bat jpda start 注意已經設置好環境變量:
               JPDA_ADDRESS=5050
                          JPDA_TRANSPORT=dt_socket
          然后使用IntelliJ的Run->Config->tomcat server 設置好tomcat 以及調試的端口。
           
          不要使用remote,這個不能調試jsp.
           
          慶祝。

          posted @ 2005-11-11 14:41 Java 的學習之路 閱讀(1145) | 評論 (0)編輯 收藏

          僅列出標題  
          主站蜘蛛池模板: 晋宁县| 海原县| 临颍县| 锡林郭勒盟| 蓬溪县| 浦城县| 开阳县| 平谷区| 古蔺县| 青海省| 闽清县| 进贤县| 阜阳市| 义马市| 集贤县| 河西区| 东阳市| 休宁县| 神池县| 巴马| 娄底市| 威海市| 阜南县| 疏勒县| 治县。| 宜昌市| 安丘市| 合作市| 罗田县| 房山区| 社旗县| 秦安县| 平舆县| 镇巴县| 托克托县| 铜梁县| 隆子县| 科技| 枣强县| 大洼县| 连云港市|