Java Web基础(二)(Servlet编写与配置)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Web基础(二)(Servlet编写与配置),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2782字,纯文字阅读大概需要4分钟。
内容图文
下面的内容都是基础的Servlet知识,如果你想打好基础,就别急着学习JSP,而是从Servlet开始学习。因为JSP页面最终会被转译为Servlet,掌握了Servlet,JSP也就学会了一半,而且在写JSP页面时也能更准确地定位错误。
开发环境的搭建我就不说了,百度一搜一大堆,说一下我的开发环境:MyEclipse + Tomcat 7.0 + JDK 7
编写一个基本的Servlet
我们使用最原始的方式编写一个Servlet,首先遇到建一个类,然后继承HttpServlet,并实现其中的某些方法。HttpServlet位于servlet-api.jar中,这个jar包是大名鼎鼎的web容器——Tomcat提供的,我们来看一下jar包里有啥:
下面是核心的类关系图:
通过这个类关系图我们知道,Servlet接口定义了基本行为,例如与Servlet生命周期有关的init()、destroy(),以及提供服务时调用的service()方法;然后抽象类GenericServlet实现了Servlet接口、ServletConfig接口,将容器调用init()方法时传入的ServletConfig实例封装起来,而service()方法直接标示为abstract而没有任何实现。
我们注意到GenericServlet没有规范任何有关HTTP的相关方法,而是由继承它的HttpServlet来定义,这也容易理解,因为不只有HTTP一种协议,还有FTP等其它协议。然后HttpServlet里面实现了service()方法,判断HTTP的请求方式并交给doGet、doPost等方法去处理,所以我们要在继承HttpServlet类时需要重写doGet或doPost方法。
在web.xml中注册Servlet程序
这是最传统的方式,首先我们需要写一个类并继承HttpServlet,重写相应的方法后,打开web.xml注册该Servlet,下面是一个注册Servlet的例子:
<?xml version="1.0" encoding="UTF-8"?> <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"> <servlet> <description>该Servlet的描述信息</description> <display-name>显示的名称</display-name> <servlet-name>SimpleServlet</servlet-name> <servlet-class>com.web.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SimpleServlet</servlet-name> <url-pattern>/servlet/SimpleServlet</url-pattern> </servlet-mapping> </web-app>
上面注册的意思是,用户可以通过”../servlet/SimpleServlet.view”来请求该Servlet,web容器会将该Servlet请求交给名称为SimpleServlet(由<servlet-name>匹配)的Servlet来处理,该Servlet对应的类是com.web.SimpleServlet。具体流程如下图所示:
这里需要注意的一点是,当应用程序启动后,默认情况下不会创建所有的Servlet实例。当这个Servlet第一次被请求时,他会被Web容器转译为Servlet并编译为.class文件,存放在指定目录中(具体啥目录由Web容器决定),并创建相应的实例,这个过程叫做Servlet的初始化;若以后再请求该Servlet,则不会触发转译和编译操作。如果想在应用程序启动时就进行编译和转译的操作,需要在web.xml中的<servlet>标签中,指定<load-on-startup>的值大于0(小于等于0为不随程序启动而初始化),其值的大小决定了初始化的顺序。
使用@WebServlet注册Servlet程序
在Servlet 3.0中,可以使用标注(Annotation)来告诉web容器哪些是需要注册的servlet,例如下面的例子:
这个例子等同于在web.xml中这样配置:
<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.web.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello.view</url-pattern> </servlet-mapping>
我们看到使用标注的形式比使用web.xml配置servlet简单多了,除此之外,@WebSevlet还可以配置name, urlPatterns(默认), loadOnStartup等,能在web.xml中配置的,使用@WebServlet也能配置。
虽然使用web.xml方式比较麻烦,但是web.xml中的配置会覆盖@WebServlet标注的配置,所以我们可以使用@WebServlet来作为默认值,然后使用web.xml方式作为日后更改设置值使用。
Servlet高级配置和部署,放在以后时机合适了再讲吧!
原文:http://blog.csdn.net/zhai56565/article/details/51333292
内容总结
以上是互联网集市为您收集整理的Java Web基础(二)(Servlet编写与配置)全部内容,希望文章能够帮你解决Java Web基础(二)(Servlet编写与配置)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。