servlet笔记
Java EE课程体系:
基础(核心):servlet、JSP
高级:框架,如spring、hibernate、Struts等

servlet概述
servlet技术是在java ee出现之前就存在了,在开发动态网页中得到广泛的应用,直到现在的java ee项目中也是非常重要的,同时jsp也是在servlet的基础上发展起来的
servlet(java服务器小程序)是用java编写的服务器程序,它的特点:
    1.由服务器调用和执行
    2.用java语言编写的
    3.按照servlet规范开发
    4.功能强大,可以完成几乎所有的网站功能
    5.是学习jsp的基础 

servlet/jsp运行环境: 

Tomcat是一个免费的开源的servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。 
tomcat在网络中的位置


servlet开发流程
1.在Tomcat的webapps建一个英文名的文件夹(如:myweb),在myweb下创建一个WEB-INF文件夹,在WEB-INF下写一个文件web.xml(该网站的配置信息),在myweb下建立一个classes的子文件夹,也可以从别的目录ROOT下拷贝
2.开发servlet(引入Tomcat文件夹下lib文件夹里的servlet-api.jar)
3.部署servlet(配置web.xml文件)
4.启动Tomcat,访问你的servlet,在浏览器的地址栏中输入:http://127.0.0.1:8080/myweb/hello回车就可以看到servlet的输出
注意:127.0.0.1是服务器所在的IP,8080是端口号,要根据实际情况定

配置Tomcat虚拟目录:
将虚拟目录配置到Tomcat的conf目录下面的server.xml文件,在<Host>节点之间添加代码:
<Context path=”/web2” docBase=”d:\web2” />

其中path:应用名称,或者默认的是web工程的名称。
docBase:应用所在的位置(绝对位置)。
使用eclipse开发servlet
步骤:
创建web工程
创建包结构:controller、service、dao、entity
创建servlet类
部署servlet:配置web.xml文件
启动Tomcat,打开浏览器,输入URL
开发servlet有三种方法
1、实现servlet接口
参考教学演示案例的“案例1_helloworld”。

servlet生命周期
1.Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。
2.init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
3.service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用。对于每次访问请求,servlet对象都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给servlet对象调用的service()方法,service()方法再根据请求方式分别调用doXXX方法。
4.destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
servlet工作流程
1、客户端发出http请求
2、tomcat根据请求找到对应的URL
3、tomcat根据URL找到对应的服务类
4、servlet根据http的请求方式,选择执行doXXX方法
5、响应客户端
2、继承GenericServlet
参考教学演示案例的“案例2_打印页面及三种实现servlet方式”文件夹下面的“HelloSecond.java”。
3、继承HttpServlet
参考教学演示案例的“案例2_打印页面及三种实现servlet方式”文件夹下面的“HelloThird.java”。

Tomcat启动时装载servlet
如果在<servlet>元素中配置一个<load-on-startup>元素,那么,WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。
作用:为web应用写一个InitServlet,这个servlet配置为启动时装在,为整个web应用创建必要的数据库表和数据。或者是启动一个后台线程,定时去完成某些工作(如:定时检查内存池中数据,当数据量低于某个下限时,去数据库获取数据)。

<servlet>  
 <servlet-name>initservlet</servlet-name>  
 <servlet-class>com.yunlian.controller.initServlet</servlet-class>    
 <load-on-startup>1</load-on-startup>  
</servlet>  
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载
中文乱码

方式一:
req.setCharacterEncoding("UTF-8");
方式二:
resp.setContentType("text/html;charset=UTF-8");
方式三:
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐