知识整理——Servlet

来源:互联网 发布:淘宝网廷长收货 编辑:程序博客网 时间:2024/06/09 14:47

0,三层架构:

单一职责原则,职责和功能分离开,实现高内聚、低耦合。web:接受数据,封装成bean,传输数据,返回响应service:处理业务逻辑dao:与数据库交互优点:    1,开发人员只关注某一个层面    2,很容易的用新的实现来替换原有层次的实现,降低层与层之间的依赖    3,利于标准化    4,各层逻辑复用    5,结构更加明确    6,便于维护缺点:    1,降低系统性能    2,导致级联修改    3,增加成本(开发时间和人员增加)

1,Tomcat

目录bin :存放可执行文件    conf :存放配置文件lib :存放jar包logs :存放日志temp :存放临时文件webapps :存放web项目work :存放jsp转换成html的中间产物

2,什么是Servlet

1,用Java编写的服务器端程序。2,主要功能在于交互式地浏览和修改数据,生成动态Web内容。3,狭义的Servlet是指Java语言实现的一个接口,4,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。5,Servlet运行于支持Java的应用服务器中。6,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

JSP概念
Servlet是j2ee提供的动态资源开发技术,是以java的程序的形式进行开发,在java中书写HTML标签是一件十分头疼的事情,所以人们开发出了JSP,看起来像是HTML一样,但是通过服务器的编译最终可以生成Servlet,jsp页面其实就是一个servlet。
动态网页技术
jsp页面翻译成.java,然后再编译成.class,最后再运行这个.class文件
jsp = html + java

jsp页面其实就是一个servlet
servlet能做的事情jsp全能做。
servlet和jsp需要部署在服务器上才能运行。
servlet和jsp不需要写main方法运行。
浏览器只能打开html,需要通过服务器Tomcat将java转换成html,才能打开。

3,Servlet的作用:

可以让服务器调用处理请求的类。

4,一个类变成Servlet的方法:

1,实现一个Servlet接口    service(ServletRequestreq,ServletResponse res); 处理请求的方法。    destroy(); 销毁    getServletConfig();返回ServletConfig 对象。    getServletInfo();返回Servlet对象的信息。    init(ServletConfig config);初始化。2,继承一个抽象类HttpServlet    public class ServletName extends HttpServlet {         public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}         public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {} } 

**5,servlet的生命周期:

servlet创建、初始化只一次(因为单例),执行多次销毁:正常关闭服务器     重新部署servlet的对象是单例:    在web项目整个运行期间,每一个servlet类只会有一个对象存在。1,创建 :(默认情况)servlet第一次被访问的时候创建2,初始化 : 创建以后立刻初始化,调用init(ServletConfig config)3,执行 : 每次被访问的时候都会调用service(ServletRequest req,ServletResponse res);4,销毁 : 正常关闭服务器,服务器自动重新部署,手动重新部署服务器的时候会调用destroy()进行销毁。由于对象单例,可能产生多线程安全问题,解决办法:    1,减少成员变量的使用    2,加锁synchronized    3,使用安全性接口6,客户端向服务器发请求和传参,客户端向服务器发送请求可以是get方式也可以是post方式.所以传参也分为get方式下传参和post方式下传参。    1,get方式下传参:    a.浏览器中输入地址(URL)然后回车    b.超链接 <a href="param?name=haha&age=20"></a>    c.页面中引入的css样式文件    d.页面中引入的js的文件(javascript)    e.<img src="image/a.jpg" />    e.<img src="register" />    f.form表单中method="get"    g.ajax中可以设置异步提交请求的方式为get    2,post方式下传参:    a.form表单中method="post"    b.ajax中可以设置异步提交请求的方式为postget/post区别:主要体现在所传参数上面    get方式传参的特点:        1.参数直接放在url后面。        2.从浏览器的地址栏里面可以直接看到所传的参数。        3.参数的长度有限制,不能把一个很长的数据通过get方式传参。(与浏览器种类有关)           post方式传参的特点:        1.参数放在请求体部。        2.浏览器的地址栏中看不到所传的参数。        3.因为参数不用出现在地址栏里面,所有参数长度是没有限制的。

7,servlet中接收客户端传过来的参数:

form: action="/url" input标签中 获取 key-value a  : href="/url?key1=value&key2=value"

8,

请求发送的过程     浏览器-->tomcat服务器-->web.xml-->servlet.java-->代码响应的过程    代码-->servlet.java-->服务器-->浏览器

9,servlet中的跳转:

1,服务器内部跳转:    RequestDispatcher rd =req.getRequestDispatcher(page).forward(req, resp);     跳转:        rd.forward(req, resp);            把前一个servlet的out输出流数据刷新        rd.include(req, resp);            不会刷新    特点:    1.浏览器地址不变    2.请求链不断开    3.request,response对象都是同一个。2,客户端重定向:    resp.sendRedirect(page);    特点:    1.地址栏数据会发生改变    2.请求链断开,相当于重新发送请求    3.request,response对象都是浏览器新发出的

10,servlet的三大容器:request、session、application

在多个servlet中进行数据的传递。(用容器只能传到jsp页面)request :HttpServletRequest    一次请求=请求+响应    生命周期太短session : HttpSession(可能线程不安全)    一次会话=多次请求    获取: request.getSession();     钝化:当服务器正常关闭,但session没有到正常死亡时间,会写到文件中    活化:服务器启动,会加载work下的.sess文件,把文件中的session对象加载到服务器中    cookie:        保存用户访问的信息数据,因为http协议的访问是无状态访问,不会保存访问的记录。    session和cookie区别:        session是保存在服务器端的一个对象,客户端没有。        cookie在客户端是以本地文件的形式存在的,在服务器端是以java对象的形式存在。        session是把数据保存在服务器端的内存里面。        cookie是把数据保存在客户端的文件里面。        session在多个servlet中进行数据的传递        cookie保存用户访问的信息数据application :ServletContext(可能线程不安全)    所有页面    获取:session.getServletContext();

11,Filter(过滤器) : 拦截请求

编码的转换信息的过滤权限的判断登录的验证<filter>    <filter-name>encodingFilter</filter-name>    <filter-class>com.briup.filter.EncodingFilter</filter-class></filter><filter-mapping>    <filter-name>encodingFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>

12,监听器(Listener) :监听web中的一些事件的发生,如果事件发生,这个监听器就会调用某些方法处理.

如何去写一个监听器:    1.实现一个接口。    2.在web.xml文件中进行配置。<listener>    <listener-class>com.briup.listener.RequestListener</listener-class></listener>Servlet API中定义了8个监听器接口,可以用于监听ServletContext,HttpSession,ServletRequest对象的生命周期事件。ServletContextListener      监听Servlet上下文对象初始化或者被销毁ServletContextAttributeListener 监听Servlet上下文中的属性列表的变化HttpSessionListener         监听Session生命周期HttpSessionActionListener   监听session被钝化或者激活(活化)HttpSessionAttributeListener监听Session属性列表发生的变化HttpSessionBindingListener  监听Session中是否有对象绑定或者删除,该对象要实现这个接口//只有这个是该对象实现,其他的都是先写监听器的实现类ServletRequestListener      监听ServletRequest对象声明周期ServletRequestAttributeListener 监听ServletRequest属性列表发生的变化
原创粉丝点击