您的位置:首页 > Web前端 > JavaScript

初识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来作日后的更改设置值之用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ServletJSP