<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)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲中文字幕无码不卡电影| 一区国严二区亚洲三区| 亚洲人成色77777| a级毛片在线视频免费观看| 自拍偷自拍亚洲精品情侣| 久久久精品视频免费观看 | 91精品手机国产免费| 亚洲AV无码一区东京热久久| 无码人妻精品中文字幕免费| 亚洲高清在线观看| 69av免费观看| 久久亚洲精品专区蓝色区| 日本免费网站在线观看| 免费精品国产自产拍在线观看| 亚洲伊人成无码综合网| 最近更新免费中文字幕大全| 亚洲视频在线观看| 大地资源二在线观看免费高清| 日韩欧美亚洲中文乱码| 亚洲国产精品碰碰| 久久一区二区三区免费播放| 亚洲人成网站在线观看播放动漫| 成年男女男精品免费视频网站| 黄页网站在线免费观看| 国产V亚洲V天堂无码久久久| 在线观看H网址免费入口| 亚洲av无码成人影院一区| 亚洲综合网站色欲色欲| 黄网站色在线视频免费观看| 无码色偷偷亚洲国内自拍| 精品亚洲一区二区| 免费人成视频在线| 国产亚洲精品免费视频播放| 亚洲人和日本人jizz| 亚洲国产成人精品91久久久 | caoporn成人免费公开| 亚洲日本va午夜中文字幕一区| 成年在线网站免费观看无广告| 亚洲精品视频免费观看| 亚洲一区二区三区久久| 亚洲综合伊人久久综合|