Servlet 3.0筆記之快速上手,快速體驗
在開發環境搭建之后,下面需要在Eclipse 3.6 (JAVA EE版本)里面配置好Tomcat 7:
若不選擇JDK1.6或者JRE 1.6,會有提示錯誤信息。
在Eclipse 3.6 新建一個“Dynamic Web Project”,主要配置如下:
然后就是新建一個Servlet : HomeAction.java 代碼如下:
一個最簡單的Servlet注解 : @WebServlet(“/home”),簡單好記。
下面看一個較為復雜的Servlet注解:
再來學習一下WebServlet 的注解配置:
再新建一個Filter:
最簡單注解方式 @WebFilter(“/hello”),默認為對URL的攔截。
各個配置參數意義如下:
現在再看看運行效果:
簡單幾下就試用了新版本的Servlet 3.0 的一些特性,很簡單吧,省去了很多配置的繁雜。當然在這很短的時間內,尚有很多東西尚未體驗,不著急,慢慢來。有時間,我會一并發送上來。
項目打包下載地址:
下載地址
下一篇將講如何替代JSP,讓開發速度更快一些;最初的Servlet + JavaBean + JSP 模式,可能已經不太適合現在企業的開發需求。我們需要的是很輕的開發方式,具體是什么,下篇見 :))

若不選擇JDK1.6或者JRE 1.6,會有提示錯誤信息。
在Eclipse 3.6 新建一個“Dynamic Web Project”,主要配置如下:

然后就是新建一個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> 標簽。 |
現在再看看運行效果:


簡單幾下就試用了新版本的Servlet 3.0 的一些特性,很簡單吧,省去了很多配置的繁雜。當然在這很短的時間內,尚有很多東西尚未體驗,不著急,慢慢來。有時間,我會一并發送上來。
項目打包下載地址:
下載地址
下一篇將講如何替代JSP,讓開發速度更快一些;最初的Servlet + JavaBean + JSP 模式,可能已經不太適合現在企業的開發需求。我們需要的是很輕的開發方式,具體是什么,下篇見 :))
posted on 2010-07-03 19:22 nieyong 閱讀(907) 評論(0) 編輯 收藏 所屬分類: Servlet3