Servlet入门笔记

一、进程与线程的区别?

           首先我们打开任务管理器, 在任务管理器中有一选项卡就是进程,在这里能看到很多启动的进程,每个进程都对应了CPU和内存的使用情况,那进程是什么?进程就是资源(或内存)管理的最小单位。 内存是通过进程方式管理。

          在java中多线程程序执行过程是这样的:首先java虚拟机启动一个进程,他同时向操作系统申请一块内存,比如说申请的内存大小为64M,这就是java虚拟机的内存,启动线程再向java虚拟机在这64M中申请一内存。

         线程就是程序执行的最小单位。

二、servlet的生命周期
 当用户servlet时,服务器会首先会查看在内存中是否已经有了servlet的对象,若已经有了那么就不需要创建servlet对象,若是没有servlet对象, 那就创建一个servlet对象,并紧接着调用init方法初始化该servlet对象,然后调用service方法响应用户请求,当服务器被关闭或者web应用被卸载时, servlet引擎调用destroy方法,摧毁servlet对象。在servlet生命周期中需要注意的是:在内存之中始终只有一个servlet对象,这个servlet对象是在用户第一次访问的时候被创建,init方法也只被调用一次。 那么servlet并是不是一定是在用户第一次访问时被创建,不是滴,你可以通过在配置文件中做一些手脚,让他在用户第一次访问时不创建,怎么做?你可以在web.xml中配置load-up-startup参数。让tomcat启动时就创建servlet对象。

三、在继承GenericServlet的时候不要重写有参数的init的方法init(ServletConfig config),应该覆盖无参数init方法init(),,

为什么?查看API文档可知,在init(ServletConfig config)方法内部会调用init() 方法。而且你若是覆盖init(ServletConfig config)方法,tomcat就不能帮你将初始化参数封装到ServletConfig中。

四、web开发中的路径问题

在web中 “/ ” 开头的路径代表绝对路径, 不以 “/ ” 开头的路径是相对路径, 在web开发中建议不要使用相对路径。
 在服务器中 “/” 代表web应用的路径,http://localhost:8080/webapps 在客户端 “/” 代表的是 网站的路径  例如:http://localhost:8080/, 在写路径时,要思考这个路径是给谁看的,若是给服务器看的,那么“/” 代表web应用的路径,若是给客户浏览器看的,那么“/” 代表的是 网站的路径。 一般在服务器端的程序编写的路径都是给服务器看的,一般在客户端在程序都是给客户浏览器看的(前面这句是自己总结的)。
 但是
 在服务器端请求重定向时,例如:服务器端的代码:
 response.setStauts(302);    状态码302 准确意义是在其他地址发现请求数据
 response.setHeader("location", "url");

这样服务器端实现重定向,在这里url的书写需要加上斜杠和web工程的名字,为什么????
 自己思考后的结果与大家分享一下(欢迎不同意见):请求重定向不一定是在本web应用下去寻找资源,有可能要去别的web应用下面去寻找资源,所以这里 “/” 代表的是 网站的路径

五、在web project中读取文件的问题
 在web project读取文件有两种方式:
 1、使用文件系统路径
        String filepath = "/WEB-INF/classes/test.txt";
        this.getServletContext().getRealPath(filepath);
        首先要明确在在web中 "/" 开头的路径代表绝对路径, “/” 代表web应用的路径
  2、使用字节码对象读取文件
        比如有一个类叫Demo, 在src目录下建立一个文件test.txt
       filepath = "/test.txt";
        第一种:Demo.class.getResourceAsStream(filepath);    //这里的url要注意:filepath中的 ”/"不是web应用路径,而是相对于src的路径,在服务器中这里的"/" 代表http://localhost:8080/webapps/WEB-INF/classes 目录

     为什么在使用类路径时,"/" 代表这样的路径呢????


       第二种:URL url = Demo.class.getResource(filepath);  

                        String path = url.getpath();     //资源在服务器的绝对路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值