我的学习之路_第三十章_servlet
servlet:小服务程序
servlet是JavaWeb体系中的三大核心(servlet/Filter/Listener)之一,而且是最主要的那个.
作用:接受请求,处理请求,做出响应
继承体系:servlet(接口)-->GenericServlet(抽象类)-->HttpServlet(抽象类)
servlet(接口):
init:初始化:servlet是第一次被访问时初始化的,在服务器运行期间,servlet都只有一个对象
多个访客使用的是多条线程.
destroy:销毁:只有正常关闭服务器时才会调用此方法.
servlet:服务:被访问时调用此方法
在运行过程中某一个类的对象永远只有一个,叫单例模式
service( ServletRequest , ServletResponse ):服务,接收请求
Request对象代表的是浏览器发送到服务器的请求*
Response对象代表的是服务器向浏览器发送的响应*
getServletConfig:取得servletConfig
getServletinfo:取得servletinfo
【Servlet的生命周期】
创建:
第一次被访问(默认),只初始化一次
通过修改web.xml配置文件把servlet的创建改为项目启动即初始化
web.xml的servlet标签中添加一个 load-on-startup 标签,值为整数,一般设置为2(0-4,是一个优先级),
其中0和1是系统使用的,所以尽量不要用.
销毁:项目关闭(并不是服务器的启动和停止)
【servlet的路劲设置】 : url-pattern(过滤器也使用)
完全匹配:不含通配符的
/aaa/bbb 访问目标为/aaa/bbb的请求,运行此servlet
路径匹配:
/aaa/* /* /ab* ,前半段匹配即可
后缀匹配:
*.xxx 后半段匹配即可
默认: / 执行默认servlet(不用)
原则:
1.*要么开头,要么结尾,不能在中间.
2.路径如果不以*开头,则必须以/开头.(也就是说必须是绝对路径)
3.配置文件中的路径/aa/bb不带项目名的
4.页面中的超链接 表单提交的路径,绝对路径是要项目名的
原因:1.配置文件是属于某一个WEB项目的,所以不需要项目名
2.而对于页面来说,浏览器面对的WEB服务器,而服务器中是可以有多个项目的,所以
页面中的绝对路径的根代表的是服务器,所以以后要带项目名
例如:http://localhost:8080/day34/hello.servlet
程序 配置文件中的路径,服务端的WEB路径:
配置文件:<url/pattern> /hello.servlet</url-pattern>,开头的/代表的是当前项目的根
页面中的路径,客户端的WEB路径:
页面:<a href="day34/hello.servlet">aaa</a> 开头/代表的是服务器
特列:重定向
【servlet如何接受请求】
servlet的核心方法(servlet接口 servlet,HttpServlet : doGet doPost)接受两个参数:请求和响应对象,这两个对象是WEB服务器在接收到Http的请求
后,封装的两个JavaBean.请求和响应相关的信息都封装在这两个对象中
如果浏览器在发送请求是提交的表单的参数,则找Request对象来取得:
String getParameter(String name) <input type="" name="" value="">
【servlet如何发送响应:】
resp.getWriter().write("响应内容") 响应对象的输出流(向浏览器输出内容的流)
代码分层:
servlet:负责流程,接受请求,调用哪个service,响应什么信息
service:负责实现功能(业务逻辑),涉及底层的数据时,调用dao层
dao:只负责数据的操作(CURD),不参与业务
代码分层的总结:
1.为了让程序结构更加清楚
2.后续的维护和扩展工作中,变的更简单
3.工程性(后续的可维护性和可扩展性)