<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 閱讀(912) 評論(0)  編輯  收藏 所屬分類: Servlet3

    公告

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

    新浪微博,歡迎關注:

    導航

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

    統計

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲婷婷国产精品电影人久久| 国产三级在线观看免费| 日本一道在线日本一道高清不卡免费| 久久亚洲精品成人av无码网站| 成人午夜影视全部免费看| 国产片免费在线观看| 亚洲一卡2卡4卡5卡6卡残暴在线| 亚洲国产精品综合久久2007| 少妇太爽了在线观看免费视频| 亚洲AV无码一区二区二三区软件| a级毛片无码免费真人久久| 国产亚洲综合一区柠檬导航| 亚洲毛片免费视频| 91麻豆最新在线人成免费观看| 最新国产成人亚洲精品影院| 在线免费观看污网站| 直接进入免费看黄的网站| 亚洲一级片免费看| 九九精品成人免费国产片| 亚洲第一成年人网站| 国产精品无码免费播放| 亚洲AV无码专区在线观看成人| 四虎永久免费影院在线| A国产一区二区免费入口| 亚洲国产精品不卡在线电影| 日韩免费精品视频| 在线91精品亚洲网站精品成人| 国产91精品一区二区麻豆亚洲| 三年片在线观看免费大全电影| 亚洲人成网站在线观看播放青青 | 亚洲精品美女在线观看播放| 嫖丰满老熟妇AAAA片免费看| 亚洲国产日韩a在线播放| 222www在线观看免费| 亚洲免费在线观看| 亚洲精品美女网站| 亚洲人午夜射精精品日韩| 99久久免费精品高清特色大片| 亚洲日韩国产AV无码无码精品| 丁香五月亚洲综合深深爱| 免费观看在线禁片|