• Servlet知识总结


    1.首先什么是Servlet?

    servlet是一个运行在服务器端的小程序,Servlet是对支持Java的服务器的一般扩充它是一种动态加载的模块,为来自Web服务器的请求提供服务。它完全运行在Java虚拟机上。由于它在服务器端运行,因此它不依赖于浏览器的兼容性。。

    1.1.如何开发一个Servlet?

    第一步.创建一个java类,然后继承javax.Servlet.HttpServlet

    第二部.在默认的web.xml中添加如下代码(在</welcome-file-list>下)

    <servlet>

    <servlet-name>servlet的名字</servlet-name>

    <servlet-class>servlet的类名</servlet-class>

       </servlet>

       <servlet-mapping>

    <!--跟servlet元素中的servlet-name相同-->

    <servlet-name>servlet的名字</servlet-name>

    <!--定位一个servlet的URL-->

           <url-pattern>servlet的URL</url-pattern>

       </servlet-mapping>

    1.2.什么是Servlet容器?

    负责处理客户请求,把请求传给Servlet并把结果返回给客户。不同程序的容器实际实现可能有所变化,但容器与Servlet之间的接口是由Servlet API定义好的,这个接口定义了Servlet容器在Servlet上调用的方法传递个Servlet对象类。

    1.3.Servlet核心类和接口有哪些,分别的作用是什么?

    1.4.Servlet生命周期,原理?

    (1)Servlet容器创建的一个实例

    (2)容器调用该实例的init()方法

    (3)如果容器对该Servlet有请求,则调用此实例的service()方法

    (4)容器在销毁本实例前调用它的destory()方法

    (5)销毁并标记该实例已供作为垃圾回收

    原理:首先在浏览器上输入服务器端口号建立连接,然后通过http协议打包这串数据,向服务器端发送,服务器端收到这个请求和xml中的数据进行比对,然后通过servlet容器调用java内部封装好的service()方法,request接收请求处理数据,在service(request,response)方法内实地操作数据,request结束以后,通response响应,取出数据,之后用Servlet将取出的数据进行打包,发送到浏览器,浏览器响应数据包中的数据取出,生成页面。

    1.5.Html表单的处理?

    <form method="post" action="/Servlet/web">

    <input type="submit" value="提交"

    1.6.get和post的区别?

    (1)get是从服务器上获取数据,post是向服务器端传送数据

    (2). get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
    (3). get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

    (4)在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

    1.7.转发和重定向定义和特点,使用方法?

    a.重定向: response.sendRedirect(""),以前的request中存放的变量全部失效,并进入一个新的request作用域,客户端完成的;

    b. 转发: getRequestDispatcher(""),以前的request中存放的变量不会失效,就像把两个页面拼到了一起,服务器端完成的;

    2.什么是Cookie?

    浏览器与服务器之间是使用HTTP进行通信,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此无论发送第一次或者是很多次请求,服务器端都当做是第一次处理,

    为了弥补这个缺陷,Netscape开发了一个cookie这样有效的工具用来保存用户的个人信息。cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段,当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,来识别这个用户。

    2.1如何创建一个Cookie,以及生存时间和路径cookie的限制?

    // new一个Cookie对象,键值对为参数  

    Cookie cookie = new Cookie("key", "cookie的value值");  
         如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码,使用
               URLEncoder.encode("cookie的value值","utf-8");
    // 设置Cookie最大生存时间,以秒为单位,负数的话为浏览器进程,关闭浏览器Cookie消失  
    cookie.setMaxAge(*24*60*60);  // 一天  
    // 将Cookie添加到Response中,使之生效  
    response.addCookie(cookie);  //addCookie后,如果已经存在相同名字的cookie,则最新的覆盖旧的cookie

    3.什么是Session?

    Session中文是“会话”的意思,浏览器访问服务器时,服务器会创建一个 session 对象(该对象有一个唯一的 id, 一般称为sessionId)。服务器在缺省情况下,会sessionId 以 cookie 机制发送给浏览器。当浏览器再次访问服务器时,会将 sessionId 发送给服务器。服务器依据 sessionId 就可以找到对应的 session 对象。通过这种方式,就可以管理用户的状态。

    3.1.如何获取Session?

    HttpSession session = request.getSession();
    不 request.getSession(true)等价。

    3.2Session的常用方法?

     object getAttribute(String name) 返回指定属性的属性值

     Enumeration getAttributeNames() 返回所有可用属性名的枚举

     String getCharacterEncoding() 返回字符编码方式

     int getContentLength() 返回请求体的长度(以字节数)

     String getContentType() 得到请求体的MIME类型

     ServletInputStream getInputStream() 得到请求体中一行的二进制流

     String getParameter(String name) 返回name指定参数的参数值

     Enumeration getParameterNames() 返回可用参数名的枚举

     String[] getParameterValues(String name) 返回包含参数name的所有值的数组

     String getProtocol() 返回请求用的协议类型及版本号

     String getScheme() 返回请求用的计划名,如:http.https及ftp等

     String getServerName() 返回接受请求的服务器主机名

     int getServerPort() 返回服务器接受此请求所用的端口号

     BufferedReader getReader() 返回解码过了的请求体

     String getRemoteAddr() 返回发送此请求的客户端IP地址

     String getRemoteHost() 返回发送此请求的客户端主机名

     void setAttribute(String key,Object obj) 设置属性的属性值

     String getRealPath(String path) 返回一虚拟路径的真实路径

    3.3Session的生命周期,以及如何删除session?

    1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。
    2. session的删除:调用Session的invalidate方法。
    HttpSession ht=req.getSession(true);
    //从session中删除user属性
    //ht.removeAttribute(要删除的attribute的name);
    ht.removeAttribute("user");

    3.4.禁止Cookie以后,如何继续使用Session?

     Java Servlet API 中提出了跟踪 Session 的另一种机制,假如客户端浏览器不支持 Cookie,Servlet 容器能够重写客户请求的 URL,把 Session ID 添加到 URL 信息中。HttpServletResponse 接口提供了重写 URL 的方法:public java.lang.String encodeURL(java.lang.String url)

    1) url 重写是什么?
    2) 如何实现 url 重写?

    a. encodeURL(String url);
    b. encodeRedirectURL(String url);
    4.什么是dao?

    用于规范实现类! 实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类DAO类!

    5.什么是过滤器?

    servlet 规范当中定义的一种特殊的类,用于对 servlet 容器的调用过程进行拦截,过滤掉相应的字符。

    5.1过滤器的初始化以及优先级?

    Servlet 引擎先调用过滤器的 doFilter 方法初始化,依据<filter-mapping>的先后顺序依次执行。

    6.什么是监听器?

    servlet 规范当中定义的一种特殊的类,作用是监听容器当中产生的一些事件并进行相应的处理。

    6.1如何写一个监听器?

    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;

    public class CountListener implements HttpSessionListener{
    private int count = 0;
    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
    count++;
    HttpSession session = arg0.getSession();
    ServletContext sctx = session.getServletContext();
    sctx.setAttribute("count", count);
    }

    //session对象被销毁,会执行该方法
    public void sessionDestroyed(HttpSessionEvent arg0) {
    count--;
    HttpSession session = arg0.getSession();
    ServletContext sctx = session.getServletContext();
    sctx.setAttribute("count", count);

    }

    }

    Unkonw Unkonw(你不知道一样东西,你也会不知道自己不知道这样东西)
  • 相关阅读:
    jvM垃圾回收
    Java快速失败和安全失败
    方法覆盖和方法重载
    leetcode-Reverse Words in a String
    自己玩玩
    leetcode-Reverse Vowels of a String
    leetcode-Reverse String
    leetcode-Multiply Strings
    java多线程-cas及atomic
    @media响应式布局
  • 原文地址:https://www.cnblogs.com/2014-1130/p/4363584.html
Copyright © 2020-2023  润新知