聶永的博客

          記錄工作/學習的點點滴滴。

          Servlet 3.0筆記之快速上手,快速體驗

          在開發環境搭建之后,下面需要在Eclipse 3.6 (JAVA EE版本)里面配置好Tomcat 7:
          tomcat configure
          若不選擇JDK1.6或者JRE 1.6,會有提示錯誤信息。
          在Eclipse 3.6 新建一個“Dynamic Web Project”,主要配置如下:
          webapp configure
          然后就是新建一個Servlet : HomeAction.java 代碼如下:
          HomeAction.java@WebServlet("/home") //最簡單的注解方式
          public class HomeAction extends HttpServlet {
          private static final long serialVersionUID = 1L;

          protected void doGet(HttpServletRequest request,
          HttpServletResponse response) throws ServletException, IOException {

          response.setContentType("text/html; charset=UTF-8");

          PrintWriter out = response.getWriter();

          out.write("<html>");
          out.write("<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head>");
          out.write("<body>");
          out.write("<h1>");
          out.write("Hello Servlet 3.0 !");
          out.write("</h1>");
          out.write("<div>");
          out.write("Welcome Here !");
          out.write("</div>");

          out.write("<div>");
          out.write("<a href=\"hello\">訪問無參數 hello </a>");
          out.write("<br/>");
          out.write("<a href=\"hello?user=xiaoI\">訪問參數為xiaoi </a>");

          out.write("</div>");


          out.write("</body>");

          out.write("</html>");

          out.flush();
          out.close();
          }

          protected void doPost(HttpServletRequest request,
          HttpServletResponse response) throws ServletException, IOException {
          doGet(request, response);
          }
          }


          一個最簡單的Servlet注解 : @WebServlet(“/home”),簡單好記。

          下面看一個較為復雜的Servlet注解:

          @WebServlet(urlPatterns = {"/hello"}, asyncSupported = false, 
          loadOnStartup = -1, name = "HelloAction", displayName = "HelloAction",
          initParams = {@WebInitParam(name = "userName", value = "xiaomin")}
          )
          public class HelloAction extends HttpServlet {
          private static final long serialVersionUID = 9191552951446203732L;

          private static String defaultUserName = null;

          public void init() {
          defaultUserName = this.getInitParameter("userName");
          }

          @Override
          protected void doGet(HttpServletRequest request,
          HttpServletResponse response) throws ServletException, IOException {

          String userName = request.getParameter("user");

          if (userName == null || userName.equals("")) {
          userName = defaultUserName;
          }

          request.setAttribute("userName", userName);

          // 轉向JSP進行處理
          request.getRequestDispatcher("/hello.jsp").forward(request, response);
          }

          @Override
          protected void doPost(HttpServletRequest request,
          HttpServletResponse response) throws ServletException, IOException {
          this.doGet(request, response);
          }
          }



          再來學習一下WebServlet 的注解配置:



          屬性名 類型 描述
          name String 指定 Servlet 的 name 屬性,等價于 <servlet-name>。如果沒有顯式指定,則該 Servlet 的取值即為類的全限定名。
          value String[] 該屬性等價于 urlPatterns 屬性。兩個屬性不能同時使用。
          urlPatterns String[] 指定一組 Servlet 的 URL 匹配模式。等價于 <url-pattern> 標簽。
          loadOnStartup int 指定 Servlet 的加載順序,等價于 <load-on-startup> 標簽。
          initParams WebInitParam[] 指定一組 Servlet 初始化參數,等價于 <init-param> 標簽。
          asyncSupported boolean 聲明 Servlet 是否支持異步操作模式,等價于 <async-supported> 標簽。
          description String 該 Servlet 的描述信息,等價于 <description> 標簽。
          displayName String 該 Servlet 的顯示名,通常配合工具使用,等價于 <display-name> 標簽。

          再新建一個Filter:

          AccessFilter.java@WebFilter(urlPatterns = {"/hello"},
          dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.INCLUDE, DispatcherType.FORWARD},
          initParams = {@WebInitParam(name = "encoding", value = "UTF-8")}
          )
          public class AccessFilter implements Filter {

          public void doFilter(ServletRequest req,
          ServletResponse rep, FilterChain filterChain)
          throws IOException, ServletException {
          HttpServletRequest request = (HttpServletRequest)req;

          System.out.println("datetime : " + new Date() + " ip : " + request.getRemoteAddr() + " url : " + request.getRequestURL());

          filterChain.doFilter(req, rep);
          }

          public void destroy() {
          }

          public void init(FilterConfig filterConfig) throws ServletException {
          }
          }


          最簡單注解方式 @WebFilter(“/hello”),默認為對URL的攔截。

          各個配置參數意義如下:



          屬性名 類型 描述
          filterName String 指定過濾器的 name 屬性,等價于 <filter-name>
          value String[] 該屬性等價于 urlPatterns 屬性。但是兩者不應該同時使用。
          urlPatterns String[] 指定一組過濾器的 URL 匹配模式。等價于 <url-pattern> 標簽。
          servletNames String[] 指定過濾器將應用于哪些 Servlet。取值是 @WebServlet 中的 name 屬性的取值,或者是 web.xml 中 <servlet-name> 的取值。
          dispatcherTypes DispatcherType 指定過濾器的轉發模式。具體取值包括:
          ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
          initParams WebInitParam[] 指定一組過濾器初始化參數,等價于 <init-param> 標簽。
          asyncSupported boolean 聲明過濾器是否支持異步操作模式,等價于 <async-supported> 標簽。
          description String 該過濾器的描述信息,等價于 <description> 標簽。
          displayName String 該過濾器的顯示名,通常配合工具使用,等價于 <display-name> 標簽。



          現在再看看運行效果:

          image

          image

          簡單幾下就試用了新版本的Servlet 3.0 的一些特性,很簡單吧,省去了很多配置的繁雜。當然在這很短的時間內,尚有很多東西尚未體驗,不著急,慢慢來。有時間,我會一并發送上來。

          項目打包下載地址:

          下載地址

          下一篇將講如何替代JSP,讓開發速度更快一些;最初的Servlet + JavaBean + JSP 模式,可能已經不太適合現在企業的開發需求。我們需要的是很輕的開發方式,具體是什么,下篇見 :))

          posted on 2010-07-03 19:22 nieyong 閱讀(907) 評論(0)  編輯  收藏 所屬分類: Servlet3

          公告

          所有文章皆為原創,若轉載請標明出處,謝謝~

          新浪微博,歡迎關注:

          導航

          <2010年7月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(58)

          隨筆分類(130)

          隨筆檔案(151)

          個人收藏

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 湟源县| 桃江县| 广安市| 崇信县| 喀什市| 武汉市| 湾仔区| 本溪市| 丁青县| 南通市| 丰城市| 陆河县| 来宾市| 盐池县| 涿鹿县| 肥东县| 潜江市| 安陆市| 合江县| 潮州市| 五华县| 高唐县| 太康县| 浦江县| 新河县| 同仁县| 汤阴县| 浦东新区| 石楼县| 西宁市| 宿松县| 康保县| 固始县| 台南市| 台前县| 德阳市| 宜兰市| 嵊泗县| 丹棱县| 苗栗市| 武川县|