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

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产成人无码区免费内射一片色欲| 亚洲日本VA午夜在线电影| 一级毛片免费视频网站| 成人在线免费观看| 亚洲人成无码网站在线观看| 午夜一区二区免费视频| 亚洲人成色77777在线观看| 在线免费一区二区| 亚洲成a人片在线不卡一二三区| 在线精品免费视频| 黄网站色成年片大免费高清| 亚洲成A人片在线观看中文| 一级女人18片毛片免费视频| 亚洲人成网站在线观看播放| 好紧我太爽了视频免费国产| 久久精品国产精品亚洲毛片| 免费视频专区一国产盗摄| 亚洲人av高清无码| 亚洲va中文字幕无码| 日韩精品无码免费专区网站| 久久久久亚洲AV无码网站| 免费不卡视频一卡二卡| 国产亚洲精品2021自在线| 亚洲人成在线播放网站| 67194熟妇在线永久免费观看| 亚洲欧美国产国产一区二区三区| 免费在线观看黄色毛片| 叮咚影视在线观看免费完整版| 亚洲综合精品一二三区在线 | 亚洲女同成人AⅤ人片在线观看| 一级视频在线免费观看| 亚洲va在线va天堂va不卡下载| 波多野结衣在线免费观看| 羞羞漫画登录页面免费| 日韩亚洲人成在线综合日本 | 午夜福利不卡片在线播放免费| 亚洲码和欧洲码一码二码三码 | 久久综合给合久久国产免费| 亚洲国产熟亚洲女视频| 亚洲无人区午夜福利码高清完整版 | 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www |