Servlet技术: 用java语言开发动态资源的技术
servlet特点:
1)servlet就是一个普通的java类,继承HttpServlet类
2)一个普通的java类实现了Servlet接口,也叫Servlet程序。我们通常继承HttpServlet是为了创建一个基于http协议的servlet程序。
3)servlet程序交给tomcat服务器运行。
开发servlet的步骤
1)编写servlet程序,继承HttpServlet
/**
* 第一个servlet程序
* @author APPle
*/
public class HelloServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//向浏览器输出内容
response.getWriter().write("this is first servlet!!!"+new Date());
}
}
2)servlet程序交给tomcat服务器运行
2.1 把servlet的class字节码拷贝到WEB-INF/classes目录下
2.2 在web.xml文件中配置
<!-- 浏览器访问: http://localhost:8080/Demo/hello -->
<!-- 配置一个servlet -->
<!-- servlet的配置 -->
<servlet>
<!-- servlet内部名称。可以自定义 -->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet类的全名:包名+简单类名 -->
<servlet-class>com.demo.servlet.HelloServlet</servlet-class>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
<!-- sevlet内部名称。和servlet配置的内部名称保持一致!! -->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet的路径映射。访问servlet的名称 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Servlet的路径映射
url-pattern: 表示servlet的路径映射,也叫servlet访问名称。
image.png
注意:
1)url-pattern要么以/开头,要么以*开头
例如: neuedu/demo1错误写法。
2)不能同时使用两种模糊匹配。
例如: /neuedu/*.html 错误写法
3)当多个url-pattern同时符合匹配规则,那么:
3.1 精确匹配的url-pattern会优先被执行。(长的最像的url-pattern优先)
3.2 后缀名结尾的模糊匹配的url-pattern优先级最低。
Sevlet缺省路径
/ : 表示servlet的缺省路径。
在tomcat服务器中配置了一个DefaultServlet,叫默认Servlet,该默认Servlet的url-pattern就是/ 。默认Servlet的作用,用于解析web应用下的静态资源。
这里涉及一个经常会考察的问题: 浏览器输入一个资源名称时,查找资源的顺序是如何?
1)首先,在当前web应用下的web.xml文件中查找是否有匹配的url-pattern
2)如果匹配到,执行对应的servlet(动态资源)
3)如果没有匹配到,就交给tomcat服务器的默认Servlet去处理
4)默认Servlet会到当前web应用下读取对应名称的静态资源文件。
5)如果读到对应的静态资源文件,那么就把内容返回给浏览器
6)如果读不到对应的静态资源文件,那么就返回404的错误页面。
Servlet的生命周期
servlet的生命周期由tomcat服务器控制的。
Servlet的四个生命周期实例化、初始化、处理请求、销毁。
构造方法: 在创建servlet对象时调用。只调用1次。证明servlet对象在tomcat服务器中是单实例的。
init方法:在创建完servlet对象后调用。只调用1次。
service方法: 在每次请求servlet时调用。调用n次。
destroy方法: servlet对象销毁时调用。只调用1次。tomcat服务器停止或web应用重新部署时调用
Servlet2 和 Servlet3的区别
1、Servlet3可以完全抛弃web.xml配置文件
欢迎页的名称:index.html或index.jsp,可以自动识别。
2、创建servlet的区别
servlet3中创建servlet无需在web.xml中进行配置
通过注解实现配置,例如:
@WebServlet(/url) 等价于 @WebServlet(name="xxx",urlPatterns="/url")
//urlPattern可以设置为数组 urlPatterns={"/url1","/url2"}
//servlet可以设置多个不同的访问url
网友评论