`
yongboy
  • 浏览: 106191 次
  • 来自: ...
博客专栏
E16f1064-1c93-305c-9ed5-2118b09bada4
Servlet 3.0 学...
浏览量:0
社区版块
存档分类

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 代码如下:

 

 

@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:

@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 模式,可能已经不太适合现在企业的开发需求。我们需要的是很轻的开发方式,具体是什么,下篇见 :))

推 荐(0)
( 收藏)
1
0
分享到:
评论
1 楼 presses 2010-07-03  
initParams = {@WebInitParam(name = "userName", value = "xiaomin")}

    public void init() { 
        defaultUserName = this.getInitParameter("userName"); 
    } 

上面这几行是不是等价成一行?:private static String defaultUserName="xiaomin";

相关推荐

    tomcat-servlet-3.0-api-7.0.76-15.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    tomcat-servlet-3.0-api-7.0.76-16.el7_9.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    jboss-servlet-3.0-api-1.0.1-9.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    servlet-api-3.0-alpha-1.jar

    这个版本是Servlet规范3.0的早期预览版,为开发者提供了对新特性和改进的初步体验。在本文中,我们将深入探讨Servlet API 3.0的主要特性,以及如何利用它们来提升Web应用的性能和可维护性。 1. **依赖注入 ...

    servlet-api-3.0.zip

    这个"Servlet-API-3.0.zip"压缩包包含的是Servlet 3.0规范的API jar文件,该文件是开发和运行基于Java的Web应用程序所必需的库。以下是对Servlet API 3.0的详细讲解: 1. **Servlet 3.0引入的新特性**: - **注解...

    servlet 3.0 jar 包综合下载

    在Servlet 3.0规范中,引入了许多新特性,旨在提高开发效率、简化编程模型以及增强可扩展性。下面将详细阐述Servlet 3.0的主要知识点。 1. **注解驱动的配置**:Servlet 3.0引入了注解(Annotation)来替代XML配置...

    servlet-api-3.0.jar包

    Servlet-api-3.0.jar是Java Servlet API的第三版实现,它是开发Web应用程序的重要组成部分,特别是在基于Java的服务器端编程中。这个库包含了用于创建和管理HTTP服务端点的接口和类,允许开发者构建动态、交互式的...

    jboss-servlet-3.0-api-javadoc-1.0.1-9.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    servlet3.0.jar下载

    这个"javax.servlet-api-3.0.1.jar"文件是Servlet 3.0规范的API实现,包含了开发人员编写Servlet和Filter所需的类和接口。以下是对Servlet 3.0主要特性的详细介绍: 1. **注解驱动的配置**:在Servlet 3.0中,...

    Servlet3.0参考手册

    Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。这份"Servlet3.0参考手册"无疑为开发者提供了全面的API参考和实用指南。 首先,Servlet3.0...

    servlet-api-3.0-7.0.0pre1-sources.jar

    servlet-api-3.0-7.0.0pre1-sources.jar

    servlet3.0-demo

    Servlet 3.0是Java EE 6规范的一部分,它带来了许多增强的功能,使得Web应用程序的开发更为便捷和灵活。在这个名为“servlet3.0-demo”的项目中,我们重点探讨的是如何利用Servlet 3.0的新特性进行文件上传操作,...

    Servlet 3.0 API - Apache Tomcat 7.0.41

    Servlet 3.0 API是Java Web开发中的一个重要组成部分,它为服务器端的动态网页处理提供了标准接口。Apache Tomcat 7.0.41是一个流行的开源应用服务器,它完全支持Servlet 3.0规范。这个API文档是开发者理解和使用...

    官方Servlet 3.0 API,CHM格式---Apache官网扒下来的

    这个是从Apache官网扒下来的,tomcat 7 的servlet3.0 api,我已经做成了chm格式,方便离线查看。

    servlet3.0.zip

    这个压缩包“servlet3.0.zip”包含两个核心的JAR文件:“javax.servlet-javadoc.jar”和“javax.servlet.jar”,它们分别提供了Servlet API的文档和实现。 1. **Servlet API**: - `javax.servlet`包是Servlet API...

    Servlet 3.0 - Apache Tomcat 7.0.61

    Servlet 3.0是Java Web开发中的一个重要里程碑,它带来了许多新特性和改进,使得开发者在构建Web应用程序时更加高效和灵活。Apache Tomcat 7.0.61是广泛使用的开源Servlet容器,它实现了Servlet 3.0规范,提供了稳定...

    Servlet 3.0jar包和source包

    `javax.servlet-3.0-sources.jar`和`javax.servlet.jar`这两个jar包是开发基于Servlet 3.0的Web应用不可或缺的工具,它们分别提供了源代码和运行时所需的类库,帮助开发者实现高效、可维护的服务器端应用程序。...

    servlet3.0 jar \ doc \pdf 相关文档资料

    - `servlet-3_0-final-jar_and_schema.zip`:可能包含Servlet 3.0的JAR文件和相关的XML架构文件,用于实际开发和部署环境中的引用。 通过阅读这些文档,开发者可以深入了解Servlet 3.0的每个细节,从而更好地利用其...

    servlet-api.jar 3.0版本(tomcat 7.0里的)

    最新的servlet-api.jar,完美结果java代码中注释(@)部分报错的问题

Global site tag (gtag.js) - Google Analytics