美文网首页
Servlet详解

Servlet详解

作者: hackywit | 来源:发表于2017-05-02 14:48 被阅读0次

一、Servlet中的线程安全问题

在Servlet中定义变量,除非特殊要求,尽量使用局部变量。
如果有需要实例变量时,应做同步处理,且同步代码块尽量包围少的代码。

二、Servlet的配置对象:

    ServletConfig:(容器来创建)
        作用:代表了Servlet配置中的参数信息。
        比如在web.xml中的参数配置如下:
            <servlet>
                <servlet-name>ServletDemo2</servlet-name>
                <servlet-class>cn.itcast.servlet.ServletDemo2</servlet-class>
                <init-param><!-- aaa=bbb -->
                    <param-name>aaa</param-name>
                    <param-value>bbb</param-value>
                </init-param>
                <init-param>
                    <param-name>xxx</param-name>
                    <param-value>yyy</param-value>
                </init-param>
              </servlet>

三、ServletContext详解

1、在应用被服务器加载时就创建ServletContext对象的实例。每一个JavaWeb应用都有唯一的一个ServletContext对象
它就代表着当前的应用。
2、如何得到ServletContext对象:ServletConfig.getServletContext();
3、有什么用?
    3.1ServletContext对象是一个域对象(域对象就是说其内部维护了一个Map<String,Object>)
            Object getAttribute(String name):根据名称获取绑定的对象
            Enumeration getAttributeNames() :获取ServletContext域中的所有名称
            void removeAttribute(String name):根据名称移除对象
            void setAttribute(String name,Object value):添加或修改对象。
    3.2实现多个Servlet之间的数据共享
    3.3获取WEB应用的初始化参数(应用的全局参数)
        在web.xml的根元素下配置一下信息:
        <context-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </context-param>
        这些参数就属于整个应用的全局参数,使用ServletContext来读取。
    3.4读取资源文件的三种方式:
        利用ServletContext.getRealPath():
                特点:读取应用中任何文件。只能在Web环境下用
        利用ResourceBundle读取配置文件
                特点:可以用在非web环境下。但是只能读取类路径中的properties文件
        利用类加载器读取配置文件(专业)
                特点:可以用在非web环境下。可以读取类路径下的任何文件。

插入:ServletAPI中的主要接口或类的核心类图

Tips:更改MyEclipse生成的Servlet的模板(8.5)
1、关闭你的MyEclipse
2、找到MyEclipse的安装目录C:\Program Files\Genuitec
3、搜索wizard(com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar),这边要注意找的是.jar文件
4、打开,找到templates\Servlet.java,这个文件就是MyEclipse生成Servlet的模板代码
5、弄出来,做好备份,开始修改。

四、请求和响应对象概述

HTTP协议包含请求和响应部分。
HttpServletRequest就代表着请求部分
HttpServletResponse就代表着响应部分

学好的关键:HTTP协议。

五、HttpServletResponse详解

5.1输出中文数据:
    字节流:
        out.write("中文".getBytes("UTF-8"));有乱码
        解决办法:
            方式一:更改浏览器的查看编码(不可取)
            
            通知浏览器,使用的码表
            方式二:response.setHeader("Content-Type", "text/html;charset=UTF-8");
            方式三:response.getOutputStream().write("<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>".getBytes("UTF-8"));
            *方式四:response.setContentType("text/html;charset=UTF-8");//方式二、三、四都是一样的
            
    字符流:
        Servlet中的字符流默认查ISO-8859-1(SUN的Servlet规范要求的)
        如何更改这个默认的编码呢?response.setCharacterEncoding("UTF-8");
        
        //不要忘记通知浏览器的编码
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Type", "text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.write(s);//默认查的是ISO-8859-1码表(SUN的Servlet规范要求的)
        
        
        在字符流输出中文数据时:response.setContentType("text/html;charset=UTF-8");
                有两个作用:通知字符流以UTF-8编码输出
                            通知客户端以UTF-8解码显示
        
        
5.2控制不要缓存
5.3控制缓存时间
5.4动态生成随机验证码图片
5.5定时刷新
5.6文件下载(中文文件名的文件下载)
5.7HttpServletResponse细节:
    字节流和字符流不能同时使用,互斥的。
    通过字符流或字节流输出的数据并不是直接打给浏览器的。而是把数据写到response对象的缓存中的。服务器从缓存中取出数据,按照HTTP协议的响应格式输出给浏览器。
    如果你调用的response的输出流没有主动关闭,服务器会替你关的。

六、HttpServletRequest详解

6.1常用简单方法
6.2获取请求消息头
6.3获取请求参数(内省)
6.4常用表单数据的获取
6.5域对象
6.6请求转发和重定向
6.7转发和重定向细节(实际开发中知道一个原则)

相关文章

  • Java Servlet API

    Servlet 支持的版本 Servlet 3.0 新特性详解 Servlet 3.0 新特性概述Servlet ...

  • Servlet详解

    一、Servlet中的线程安全问题 二、Servlet的配置对象: 三、ServletContext详解 插入:S...

  • javaweb学习总结(一)servlet开发

    一、ServletConfig详解 1.1 配置Servlet初始化参数 在Servlet的配置文件中,可以使用一...

  • 详解Servlet

    Server + Applet Servlet接口(拿到一套规范 我们第一时间 关注接口) 以上 我们可以看到Se...

  • servlet详解

    servlet简介 servlet是在java EE平台中用于接收和响应终端用户的请求。它是所有web应用程序的核...

  • Servlet详解

    Servlet 简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套...

  • 详解servlet

    什么是Servlet Servlet是Server+Applet的缩写,表示一个服务应用。其实Servlet就是一...

  • Servlet详解

    如果网页显示的内容在服务器的数据库中,除了负责显示的HTML标记之外,必须还要有完成这些业务功能的代码存在。这种网...

  • Servlet 的常见错误总结

    Servlet 的常见错误总结 HTTP状态码详解 404错误:资源未找到原因一:在请求地址中的servlet的别...

  • Servlet中涉及到的Filter和Listener

    Servlet中的过滤器和监听器详解 过滤器 Filter 并不是一个标准的Servlet ,它不能处理用户请求,...

网友评论

      本文标题:Servlet详解

      本文链接:https://www.haomeiwen.com/subject/lrictxtx.html