初识Servlet
2013-10-10 19:01
183 查看
1.1 关于HttpServlet
Servlet接口,定义了Servlet应当有的基本行为。例如,与Servlet生命周期相关的init()、destroy()方法,提供服务时所需要调用的service()方法等。实现Servlet接口的类是GenericServlet类,它还实现了ServletConfig接口,将容器调用init()方法时所传入的ServletConfig实例封装起来,而service()方法直接标示为abstract而没有任何的实现。GenericServlet的讨论会在第五章加以讨论。
HttpServlet继承自GenericServlet,其service()方法中的流程大致如下:
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if (method.equals(METHOD_GET)) { //… doGet(req, resp); //… } else if (method.equals(METHOD_HEAD)) { //… doHead(req, resp); } else if (method.equals(METHOD_POST)) { doPost(req, resp); } else if (method.equals(METHOD_PUT)) { doPut(req, resp); } //… }
当请求来到时,容器会调用Servlet的service()方法。可以看到,HttpServlet的service()中定义的,基本上就是判断HTTP请求的方式,再分别调用doGet()、doPost()等方法,所以若想针对GET、POST等方法进行处理,只需要在继承HttpServlet之后,重新定义相对应的doGet()、doPost()方法。
1.2 使用@WebServlet
编写好Servlet之后,接下来要告诉Web容器有关这个Servlet的一些信息。在Servlet3.0中,可以使用标注(Annotation)来告知容器哪些Servlet会提供服务以及额外信息。@WebServlet("/hello") public class HelloServlet extends HttpServlet {
只要在Servlet上设置@WebServlet标注,容器会自动读取当中的信息。上面的@WebServlet告诉容器,如果请求的URL是“/hello.view”,则由HelloServlet的实例提供服务。
容器会在首次请求需要某个Servlet服务时,才将对应的Servlet类实例化、进行初始化操作,然后再处理请求。如果希望应用程序启动时,就先将Servlet类载入、实例化并做好初始化动作,则可以使用loadOnStartup设置。设置大于0的值(默认值为-1),表示启动应用程序后就要初始化Servlet。
1.3 使用web.xml
使用标注来定义Servlet是Java EE 6中Servlet3.0之后才有的功能,在先前的版本中,必须在Web应用程序的WEB-INF目录中,建立一个web.xml文件定义Servlet相关信息。web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app 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" version="3.0"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>cc.openhome.HelloServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <error-page> <exception-type>java.lang.*</exception-type> <location>/error.jsp</location> </error-page> <display-name></display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
web.xml中的设置会覆盖Servlet中的标注设置,可以使用标注来作默认值,而web.xml来作日后的更改设置值之用。
相关文章推荐
- 初识Servlet
- 初识Servlet过滤器
- 初识servlet
- 初识servlet
- 初识Spring中MultipartHttpServletRequest文件上传
- [Servlet&JSP] 初识ServletContext
- Servlet初识
- [Servlet] 初识Servlet
- 初识servlet
- 初识Servlet
- [Servlet] 初识Servlet
- 初识Servlet过滤器
- 初识servlet
- 【Servlet】(一)初识Servlet
- JAVAWEB之初识servlet
- 初识Servlet监听器
- 初识Servlet
- 跟小博老师一起学Servlet ——初识Servlet
- 01初识Servlet
- 初识JAVA,对servlet的理解