• 重温servlet①


    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包

  • 相关阅读:
    Amphiphilic Carbon Molecules [UVA
    2018宁夏邀请赛I题 bubble sort(思维题
    CF1198E Rectangle Painting 2(最小割 思维
    Problem : 这个题如果不是签到题 Asm.Def就女装(积性函数dp
    cogs2223. [SDOI2016 Round1] 生成魔咒(后缀数组 hash 二分 set
    cogs1709. [SPOJ 705] 不同的子串(后缀数组
    cogs249 最长公共子串(后缀数组 二分答案
    hdu2222 Keywords Search (AC自动机板子
    ccpc网赛 hdu6703 array(权值线段树
    ccpc网赛 hdu6705 path(队列模拟 贪心
  • 原文地址:https://www.cnblogs.com/chengzhipcx/p/4964448.html
Copyright © 2020-2023  润新知