`
alex.Lin
  • 浏览: 65843 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Servlet3.0入门使用

    博客分类:
  • java
阅读更多

1       前提

1.1     JAEE,Web容器,开发工具

基于JDK6/JAVAEE6

Web容器:Tomcat7以上

Myeclipse 9.0(或者在8基础上自己扩展)

2       配置及使用

2.1     Web.xml

Servlet2.5的配置

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

                   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 

Servlet3.0的配置

<web-app version="3.0"

       xmlns="http://java.sun.com/xml/ns/javaee"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

 

3       Servlet

3.1     第一个例子

通过在java类里面使用Annotation注解的方式来配置servlet的名称和urlPattern

这样就不需要再在web.xml里配置了

@WebServlet(name = "firstServlet", urlPatterns = { "/firstServlet",

              "/myDefaultServlet" })

// 可以指定多个映射

publicclass FirstServlet extends HttpServlet {

 

       privatestaticfinallongserialVersionUID = 6531730293401271095L;

 

       @Override

       protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp)

                     throws ServletException, IOException {

              resp.getWriter().write("this is my first Servlet");

       }

}

3.2     Servlet几个常用Annotation讲解

位于javax.servlet.annotation包下

3.2.1  @WebServlet

Name:配置servlet的名称

Value/urlPatterns2个都可以指定serlvet-urlPattern,多个使用{}

loadOnStartupservletload-on-startup顺序

initParams:初始化参数

注意,必须使用@WebInitParam(name=”xxx”,value=”xxx”)

initParams = {@WebInitParam(name=”xxx”,value=”xxx”), @WebInitParam(name=”xxx”,value=”xxx”)}

asyncSupported:是否支持异步,默认为false

 

3.2.2  @WebInitParam

上面也用到了,只有2个属性namevalue

2种用法:

A、嵌入到@WebServletinitParams参数里

B、直接定义(可重复使用)

 

3.3.4.2监听器例子

AsyncContext sc = request.startAsync(request, response);

              sc.addListener(new MySyncListener());

 

class MySyncListener implements AsyncListener {

 

       @Override

       publicvoid onComplete(AsyncEvent arg0) throws IOException {

              System.out.println("syncContext is complete");

 

       }

 

       @Override

       publicvoid onError(AsyncEvent arg0) throws IOException {

              // TODO Auto-generated method stub

 

       }

 

       @Override

       publicvoid onStartAsync(AsyncEvent arg0) throws IOException {

              // TODO Auto-generated method stub

 

       }

 

       @Override

       publicvoid onTimeout(AsyncEvent arg0) throws IOException {

              // TODO Auto-generated method stub

 

       }

 

}

3.3.4.3动态注册Servlet

在代码里实现注册,目前只支持ServletContext容器启动的时候注册,不支持运行中注册

 

如下例子

//不注解,也不在web.xml中配置,而是通过动态注册的方式

publicclass DynamicServlet extends HttpServlet {

       publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

 

              response.setContentType("text/html");

              PrintWriter out = response.getWriter();

              out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

              out.println("<HTML>");

              out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");

              out.println("  <BODY>");

              out.print("    This is ");

              out.print(this.getClass());

              out.println(", using the GET method");

              out.println("  </BODY>");

              out.println("</HTML>");

              out.flush();

              out.close();

       }

 

}

 

在有ServletContext的地方就可以注册该Serlvet如下

@WebListener

publicclass MyListener2 implements ServletContextListener {

       @Override

       publicvoid contextDestroyed(ServletContextEvent arg0) {

             

       }

 

       @Override

       publicvoid contextInitialized(ServletContextEvent se) {

              System.out.println("servletContext init");

             

              //动态注册Servlet

              ServletRegistration sr = se.getServletContext().addServlet("DynamicServlet", "com.lxh.servlet.DynamicServlet");

              sr.addMapping("/DynamicServlet");

              sr.addMapping("/DynamicServlet2");//可增加多个mapping

             

       }

}

 

这样的好处假设给现有系统增加一个servlet我们只需要自己编写完后打成jar包放在现有系统下即可。对原有代码不需要做任何改动。

4       Listener

上面在Servlet就已经使用到了

4.1     注解@WebListener

Optional Element Summary

 java.lang.String

value
          Description of the listener

 

不需要参数,不需要在web.xml中配置了,如下代码,tomcat启动的时候将会捕捉到

@WebListener

publicclass MyListener2 implements ServletContextListener {

 

       @Override

       publicvoid contextDestroyed(ServletContextEvent arg0) {

              // TODO Auto-generated method stub

             

       }

 

       @Override

       publicvoid contextInitialized(ServletContextEvent arg0) {

              System.out.println("servletContext init");

             

       }

 

}

 

5       Filter

5.1     注解@WebFilter

Optional Element Summary

 boolean

asyncSupported
          Declares whether the filter supports asynchronous operation mode.

 java.lang.String

description
          The description of the filter

 DispatcherType[]

dispatcherTypes
          The dispatcher types to which the filter applies

 java.lang.String

displayName
          The display name of the filter

 java.lang.String

filterName
          The name of the filter

 WebInitParam[]

initParams
          The init parameters of the filter

 java.lang.String

largeIcon
          The large-icon of the filter

 java.lang.String[]

servletNames
          The names of the servlets to which the filter applies.

 java.lang.String

smallIcon
          The small-icon of the filter

 java.lang.String[]

urlPatterns
          The URL patterns to which the filter applies

 java.lang.String[]

value
          The URL patterns to which the filter applies

 

5.2     例子

@WebFilter(filterName="myFilter",urlPatterns="/*")

publicclass MyFilter implements Filter {

 

       @Override

       publicvoid destroy() {

              // TODO Auto-generated method stub

             

       }

 

       @Override

       publicvoid doFilter(ServletRequest arg0, ServletResponse arg1,

                     FilterChain arg2) throws IOException, ServletException {

              // TODO Auto-generated method stub

             

       }

 

       @Override

       publicvoid init(FilterConfig arg0) throws ServletException {

              // TODO Auto-generated method stub

             

       }

 

}

 

推荐阅读

 

代码之余轻松一下:当前热门-人民的名义

 

 

JAVAEE容器如何管理EntityManager和PersistenceContext

4
1
分享到:
评论

相关推荐

    Java项目:JSP+Servlet基于Servlet3.0的在线影院订票系统(源码+数据库脚本)

    1.资源包内含有源码、数据库脚本、...4.本项目适合Java初学者,是一个JavaWEB入门级项目,后端技术栈为Servlet3.0,还适应于进行毕业设计和课题设计。 5.学技术,切忌急于求成,从基础学起,打好基础,祝你学习愉快。

    SpringMVC 全注解实现 servlet3.0以上的容器支持.docx

    ### SpringMVC全注解实现Servlet 3.0以上容器支持 #### 一、SpringMVC入门 **1.1 Request的处理过程** 在Web开发领域,每一个用户的交互行为都会触发一个HTTP请求(Request),而SpringMVC框架则是管理这些请求...

    《EJB3.0入门经典》的精简版.pdf

    这本书《EJB3.0入门经典》的精简版,作为EJB基础学习的资料,通过经典实例帮助初学者理解EJB的核心概念和技术。 1. **EJB概述** EJB是Java EE(Java Platform, Enterprise Edition)的一部分,用于处理企业级应用...

    EJB3.0入门学习

    本资源"EJB3.0入门学习"显然是为了帮助初学者快速掌握这一关键技能。 EJB 3.0的主要特性包括: 1. **注解驱动**:EJB 3.0引入了注解(Annotations),如`@Entity`, `@Stateless`, `@PersistenceContext`, `@EJB`等...

    EJB3.0入门教程

    **EJB3.0入门教程** 企业级JavaBean(Enterprise JavaBeans,简称EJB)是Java平台上用于构建可扩展、安全且易于管理的企业级应用程序的核心技术。EJB3.0作为其一个重要的版本,带来了许多改进,使得开发过程更为...

    EJB3.0入门经典

    **EJB3.0入门经典**是一本专为初学者设计的教程,旨在引导读者深入理解Enterprise JavaBeans(EJB)3.0技术。EJB是Java平台上用于构建企业级应用的重要组件模型,它提供了服务器端的业务逻辑处理能力,支持分布式...

    EJB 3.0 入门文章

    EJB 3.0 可以与其他Java EE组件(如Servlet、JSP、JSF、JMS等)无缝集成,构建完整的Web应用解决方案。 ### 8. 示例 学习EJB 3.0 时,阅读《JavaEETutorial.pdf》这样的文档至关重要。它将详细解释各个概念,并...

    Servlet入门的例子

    自Servlet 3.0起,Servlet支持异步处理,允许在不阻塞线程的情况下执行耗时操作。通过调用`HttpServletRequest.startAsync()`开启异步模式,然后在回调的`AsyncContext.complete()`中发送响应。 10. **总结** ...

    spring3.0 mvc使用入门,含具体例子

    3. **注解驱动的控制器**:Spring 3.0 使用注解来简化控制器的定义。例如,`@RequestMapping` 注解可以用来将特定的 HTTP 请求映射到控制器方法。下面是一个简单的控制器示例: ```java @Controller public class ...

    Servlet技术入门教学

    自Java Servlet 3.0版本开始,Servlet支持异步处理,允许Servlet在`service()`方法内部启动一个后台线程,从而提高性能和响应能力。 8. **Filter和Listener**: 除了Servlet,Servlet API还提供了Filter(过滤器...

    ejb3.0入门经典教程.pdf

    4. **注解(Annotations)**:EJB 3.0的一大革新是大量使用注解,如`@Entity`, `@Table`, `@Id`, `@Stateless`, `@Stateful`, `@MessageDriven`等,使得部署和配置过程大大简化。 5. **依赖注入(Dependency ...

    《eclipse3.0从入门到精通》

    《Eclipse 3.0 从入门到精通》是一本专为初学者和进阶者设计的编程指南,主要聚焦于Eclipse 3.0版本的使用和开发。Eclipse作为一个开源的集成开发环境(IDE),在全球范围内广受欢迎,尤其在Java开发领域,它的功能...

    spring security 3.0入门教程PDF

    ### Spring Security 3.0入门知识点: 1. **Spring Security概述**: Spring Security是一个提供安全服务的框架,它提供了一套完整的安全性解决方案,包括认证(用户身份识别)、授权(访问控制)、防止常见的攻击...

    《EJB 3.0从入门到精通》

    学习EJB 3.0不仅要掌握其核心概念,如容器管理的生命周期、事务管理、安全性以及远程方法调用等,还要了解如何与Servlet、JSP、JTA(Java Transaction API)等相关技术集成。此外,熟悉Java EE的其他组件,如JMS...

    eclipse3.0入门

    ### Eclipse 3.0 入门详解 #### Eclipse 概述 Eclipse 是一款开源的、基于 Java 的可扩展开发平台。本质上,Eclipse 提供了一个框架和一系列服务,允许通过插件组件来构建定制化的开发环境。它自带一套标准的插件集...

    传智播客_张孝祥_java.web_Servlet开发入门第8讲

    如果需要处理上传的文件,可以使用`Part`接口和`HttpServletRequest`的`getParts()`方法,这是Java Servlet 3.0引入的新特性。 此外,Servlet还可以通过`session`和`cookie`来实现会话管理。`HttpSession`接口允许...

    servlet.rar

    在本文中,我们将深入探讨Servlet的基本概念、工作原理以及如何进行入门学习。 一、Servlet概述 Servlet是Java Servlet API规范的一部分,由Java.sun.com(现为Oracle)维护。它提供了一种标准的方法来扩展Web...

    servlet

    综上所述,"servlet从入门到高级"的学习涵盖了Servlet的基本概念、生命周期、配置、请求响应处理、会话管理、过滤器、上下文、MVC模式的应用以及Servlet 3.0的新特性。通过深入学习这些内容,开发者可以熟练掌握...

Global site tag (gtag.js) - Google Analytics