Servlet入门笔记

来源:互联网 发布:算法 benchmark 编辑:程序博客网 时间:2024/05/22 15:38
一、进程与线程的区别?

           首先我们打开任务管理器, 在任务管理器中有一选项卡就是进程,在这里能看到很多启动的进程,每个进程都对应了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();     //资源在服务器的绝对路径

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1000性价比高的手机 行车记录仪性价比高的品牌 现在性价比比较高的手机 性价比高的紧凑型suv排行榜 性价比高的平板推荐 性比价是什么意思 性价 哪个牌子的表性价比高 什么马桶好用性价比高 电脑哪个牌子性价比高 婴儿推车哪个性价比高 哪个牌子电脑性价比高 三星哪款手机性价比高 现在那些手机性价比高 哪个品牌空调性价比高 哪个牌子的拉杆箱性价比高 瓷砖哪个牌子的性价比比较好 什么牌子的羽毛球拍性价比高 什么牌子的蓝牙耳机性价比高 男士钱包什么牌子性价比高 抽油烟机哪个牌子性价比高 液晶电视什么牌子性价比高 哪个牌子的油烟机性价比高 森海塞尔哪款耳机性价比高 哪个牌子的平板性价比高 蓝牙耳机什么牌子性价比高 什么牌子的充电宝性价比高 哪个牌子的按摩椅性价比高 机械键盘什么牌子性价比高 什么牌子台式电脑性价比高 哪个牌子的电动车性价比高 什么牌子的机械键盘性价比高 跑步机哪个牌子的性价比高 现在买什么电视性价比高 哪个牌子的粉底液性价比高 thinkpad哪个系列性价比高 什么牌子的平板电脑性价比高 什么牌子固态硬盘性价比高 哪个牌子的羽绒服性价比高 整体橱柜什么牌子性价比高 哪个牌子的微波炉性价比高