<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    聶永的博客

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

    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)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 色吊丝免费观看网站| 黄网址在线永久免费观看| 亚洲国产精品无码久久久秋霞2 | 亚洲午夜精品久久久久久app | 在线v片免费观看视频| 亚洲国产另类久久久精品| 亚洲kkk4444在线观看| 24小时免费看片| 亚洲国产精品无码久久九九| 亚洲国产韩国一区二区| 中文字幕a∨在线乱码免费看| 国产jizzjizz免费视频| 亚洲美女免费视频| 国产日韩AV免费无码一区二区三区| 在线日本高清免费不卡| 国产亚洲精品无码成人| 日本一区二区在线免费观看| 国产精品va无码免费麻豆| 亚洲区日韩精品中文字幕| 全免费一级午夜毛片| 亚洲性无码一区二区三区| 免费的一级片网站| 亚洲AV无码一区二区三区网址| 在线免费观看中文字幕| 亚洲大成色www永久网址| 成人免费a级毛片无码网站入口 | 亚洲日韩乱码中文字幕| www.免费在线观看| 亚洲美女免费视频| 99re6免费视频| 久久精品国产亚洲| 最近中文字幕mv免费高清在线 | 亚洲欧洲另类春色校园小说| 2021在线永久免费视频| 久久久久亚洲av无码专区导航| 在线观看免费中文视频| 亚洲中文无码mv| 亚洲国产精品无码久久久久久曰| 亚洲精品黄色视频在线观看免费资源 | 黄网站免费在线观看| 亚洲精品福利网站|