Servlet是单例的,是线程不安全的。比较灵活,但是容易会使两个线程产生错误

类由我们自己来写,对象由服务器生成,方法由服务器自己调用。

 

一个servletconfig对象对应着一段web.xml中的servlet的配置信息。

可以获取到servletname --getServletName

获取servlet的上下文 --getServletContext

都是接口 实现类都是tomcat提供的。

获取初始化参数 --getinitparameter(String name)

 

在web.xml里面配置初始化参数

<servlet>

        <servlet-name>AServlet</servlet-name>

        <servlet-class>com.pcx.servlets.AServlet</servlet-class>

 

        <init-param>

            <param-name>p1</param-name>

            <param-value>v2</param-value>

        </init-param>

        <init-param>

            <param-name>p2</param-name>

            <param-value>v2</param-value>

        </init-param>

    </servlet>

 

    <servlet-mapping>

        <servlet-name>AServlet</servlet-name>

        <url-pattern>/AServlet</url-pattern>

    </servlet-mapping>

在servlet初始化的时候通过servletConfig获取到这些参数

    @Override

    public
void init(ServletConfig servletConfig) throws ServletException {

        System.out.println("init...");

        System.out.println(servletConfig.getInitParameter("p1"));

        System.out.println(servletConfig.getInitParameter("p2"));

        

        Enumeration es=servletConfig.getInitParameterNames();

        while(es.hasMoreElements()){

            System.out.println(es.nextElement());

        }

    }

Service(ServletRequest req,ServletResponse res) 请求 响应 每请求一次调用一次

4开头的错误是客户端的错误

404 访问的路径找不到

405 找不到处理的请求方式doPost或者doGet

200正常

304重定向

500 服务器端程序出现错误

 

 

不要再servlet里面创建成员,尽量使用局部变量。

可以创建只读状态成员。

 

让服务器启动的时候就创建色servlet

    在<servlet>中配置<load-on-startup>,其中配置一个数字(非负的整数)。

url-pattern 可以有多个。

可以在配置路径的时候给出通配符

路径匹配/servlet/*

类型匹配*.Do

/*匹配所有

*只能在两端宝宝不能出现在中间。

 

Web.xml文件的继承

Conf 目录下的web.xml文件的父文件。

404 default

Session的存活时间

每一中文件格式都对应一个mime类型

 

 

 

一个项目只有一个servletContext对象!application 域对象 --》传递数据

我们可以在对个servlet中来获取这个唯一对象,使用它可以给多个servlet传递数据!耦合度低了。 高内聚 低耦合

与天地同寿!这个对象与tomcat一块启动一块销毁。

可以死而复生。

域对象内部其实是一个map。

 

小练习:

记录访问量:

public
void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        ServletContext app=this.getServletContext();

        Integer count=(Integer) app.getAttribute("count");

        if (count==null) {

            app.setAttribute("count", 1);

        }else {

            app.setAttribute("count", count+1);

        }

        PrintWriter pw=response.getWriter();

        pw.print("<h1>"+count+"</h1>");

    }

 

访问类路径下的资源文件

    public
void doGet(HttpServletRequest request, HttpServletResponse response)

            throws
ServletException, IOException {

//        ClassLoader cl=this.getClass().getClassLoader();

        //相对于classes路径

//        InputStream is=cl.getResourceAsStream("com/pcx/servlets/a.txt");

        //相对于class文件

        InputStream is=this.getClass().getResourceAsStream("a.txt");

        //如果加上/则相对于classes目录下
和linux系统相似

//        InputStream is=this.getClass().getResourceAsStream("/a.txt");

        String s=IOUtils.toString(is);

        System.out.println(s);

    }

需要加入commons-io-1.4.jar包

图片生成:

public
class Demo2 {

    public
static
void main(String[] args) throws FileNotFoundException, IOException {

        VerifyCode vc=new VerifyCode();

        BufferedImage bi=vc.getImage();

        System.out.println(vc.getText());

        VerifyCode.output(bi, new FileOutputStream("b.jpg"));

    }

}

需加入itcast-tools-1.4.2.jar包

重温servlet①的更多相关文章

  1. 重温Servlet学习笔记--session对象

    session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...

  2. 重温Servlet学习笔记--Cookie对象

    首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...

  3. 重温Servlet学习笔记--request对象

    request和response是一对搭档,一个负责请求一个负责响应,都是Servlet.service()方法的参数,response的知识点前面梳理过了,这里只说一下request,在客户端发出每 ...

  4. 重温Servlet学习笔记--response对象

    在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletResponse对象,要对浏览器操作只需要操作这个response对象即可.response的功能分类及介绍: 响应 ...

  5. 重温Servlet学习笔记--servletContext对象

    一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...

  6. 重温servlet③

    请求转发 forward 仅有一个请求 至少两个servlet 前一个的响应头保留着,但是响应体不保留了. 设置响应体太大,会报错   请求包含Include 都包含,响应头和响应体都会保留着   R ...

  7. 重温servlet②

    重定向:我给服务器请求一条消息,服务器让我访问另外一个服务器(新的地址).302状态码,并设置location头,完成重定向.两个请求. package com.pcx.servlets;   imp ...

  8. 重温Servlet学习笔记--编码问题

    在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1:  拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ...

  9. 重温 JSP 与 Servlet

    Java Web使用SSH框架多了,很多基础的 JSP 与 Servlet 的东西都忘记了.最近在 JSP 标签 和 Struts2 包装的 Session 对象的混合使用时弄晕了,就翻书温习下. J ...

随机推荐

  1. freemarker时间转换

    Freemarker日期函数处理[转] (2012-08-01 14:32:13)   string(当和一个日期值一起使用) 这个内置标签用指定的格式把日期转换成字符串,(把默认的格式用FreeMa ...

  2. redis五种数据结构及使用场景

    string(字符串) 存储最简单的key-value结构. value可以是字符串.整数或者浮点数. 可以对整个字符串或者字符串的一部分执行操作: 对整数和浮点数执行自增或者自减操作. 使用场景: ...

  3. 关于Modelsim SE软件Fatal License Error的解决方法

    操作环境:Win7 32位系统 软件版本:Modelsim SE 10.1a Modelsim SE软件有时会弹出如图1所示“Fatal License Error”的提示信息,原因可能是软件破解不彻 ...

  4. 一维码UPC A简介及其解码实现(zxing-cpp)

    UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定.连续性的条  码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码. UPC码仅可 ...

  5. kruskal重构树

    kruskal重构树 kruskal重构树,顾名思义,是在kruskal的时候顺便搞出来的一棵重构树,具体地说是一个堆. 先说说这个东西是怎么搞出来的吧:默认事先把边按边权从小到大排序,在kruska ...

  6. CentOS7中使用阿里云镜像

    之前因为下载Docker镜像很慢所以用了一家国内的镜像DaoCloud,今天要用的是阿里云的镜像库. 首先要开通了阿里云开发者帐号,地址 : https://dev.aliyun.com/search ...

  7. 程序员,Python 这次彻底上位了!

    在 2018 年底,我们迎来了编程语言的最后一波洗礼.近期 TIOBE 公布了 12 月编程语言排行榜,前三名变为: Java.C.Python. 而在 PYPL 榜单上 Python 在今年 5 月 ...

  8. 对最近java基础学习的一次小结

    开头想了3分钟,不知道起什么名字好,首先内容有点泛,但也都是基础知识. 对之前所学的java基础知识做了个小结,因为我是跟着网上找的黑马的基础视频看跟着学的,10天的课程硬生生给我看了这么久,也是佛了 ...

  9. Python之Django基本命令

    一.新建项目 $django-admin.py startproject project_name # 特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-a ...

  10. CHAPTER 8 Out of Darkness 第8章 走出黑暗

    CHAPTER 8 Out of Darkness 第8章 走出黑暗 We expect scientists to be trying to discover new things, and for ...