个人学习笔记---Servlet

1.在互联网中,只要是能访问的资源,那么这个资源一定可以下载。(输入输出流)


2.javaEE 定义的很多事接口(标准),由TomCat来实现具体的类,因为是TomCat实现了它的标准提供给我们开发使用。
(这些类存放在\Tomcat 7.0\lib\servlet-api.jar)


3.既然这些类都在\Tomcat 7.0\lib\servlet-api.jar中,那么我们要使用的话,第一步肯定是要导入(MyEclipse已经集合这些东西)。


4.servlet是服务器端小程序,不只是单纯的WEB服务器,而是只要是支持servlet规范的都可以(FTP服务器等)。


5.关于javax.servlet.servlet接口:我们不能直接实现这个接口,因为我们写得是应用于Http服务的Servlet(也就是应用于web服务器的),这个接 口有个service()方法,这个方 法是被容器直接调用的,对外提供服务。


6.HttpServlet()构造方法由容器调用,当一个新的客户端请求访问web资源的时候调用(用于实例化一个Servlet对象)


7.请求的时候,容器会根据请求的内容和提交的方法来调用对应的servlet的doXxx(),实际上是先调用(service()方法)


8.HttpServletRequest request对象封装了客户端对服务器端的一系列的请求,然后服务器再这些请求交给容器,容器交给Servlet来处理。


9.HttpServletResponse response对象封装了服务器对客户端请求的响应,用于返回给客户端的信息。


10.Servlet要想在web服务器中运行,那么就必须进行注册。所谓的注册就是通过部署描述符告诉容器自己的位置(包.类名称),有因为自己被编译成*.class后放在了 

WEB-INF 目录下了(WEB-INF是安全级别最高的,用户不可访问),故此需要映射路径,通过映射的方式来访问该Servlet。



11.关于当客户端发生请求时,容器怎么找到Servlet:首先找到该项目的web.xml文件;然后对比地址栏的URL地址和在web.xml中<url-mapping>中的 URL有没有一样的。 如果没有则报404错误,如果有则通过<url-mapping>URL对应的<Servlet-name>的名字,最后根据<Servlet-name>的名字找到该Servlet的类所在地,通过该类由容器生 成一个对象来处理请求。


12.<url-mapping>/servlet/a</url-mapping>表示的是:项目目录下的servlet文件夹下的a文件;“/”表示的项目的根目录。


13.Servlet对象只会被构造一次,初始化一次,销毁一次,处理服务多次(也就是说,不管你请求多少次,为你提供服务的都是同一个对象)。


14.HTTP具有无连接性,无连接性就是一次请求-响应之后就没有连接了(双方断开了通信)故此要设置session保存范围属性来告诉服务器之后的请求是不是同一个用户在操 作。
1)服务器通过响应请求把一些东西记录上客户端上,这些东西就是Cookie。
 2)也就是说服务器在响应时,向客户端写入一些文本文档,而且客户端可以阻止服务器写入。
3)webapp只能获取自己的Cookie(比如新浪不能获取网易的Cookie)
4)每个浏览器都有一个独一无二编号(为了防止浏览器上面有同样的Cookie时无法判断)。
5)Cookie以“名-值”对的形式保存的(类似于Map)
6) Cookie的应用:记住密码,一周内免登陆等。。。
注:之所以只能是文本文档,是为了防止恶意网站写入可执行文件(*.exe)来破坏客户端。


15.Cookie分两种:一种是设置了它的生命周期setMaxAge()它将会放在文件中,这个生命周期内服务器都能拿到这个Cookie的内容。
  一种是没有设置生周期,那么就是相当于存在内存之中,只有浏览器的窗口打开着,这种Cookie就存在着;关闭则消失。


16.一个servlet或者JSP设置的Cookie只能被同一个路径下面或者子路径下面的servlet或者JSP读取。
例如:A/a.jsp设置的Cookie;A目录的文件能读取,A目录的子目录能读取,A的上级目录不能读取。
注:这里的路径不是指真实路径,而是URL,映射的路径。


17.会话跟踪:session也是用来记录一系列状态的,session和Cookie的区别就是:
1)Cookie是记录在客户端的,不可靠,不安全
2)session记录在服务器端的


18.session的原理:当浏览器访问服务器的某个页面的时候,服务器会在内存里开辟一块内存,这块内存就叫session而且会跟浏览器关联在一起的,
这个session只能由关联的浏览器来访问(另外一个浏览器,或者是同一个浏览器的新的窗口则不能访问),多个浏览器访问服务器,则会
开辟多个session内存区域,每个session一一对应浏览器关联起来。
注:HTTP协议是无连接性,当浏览器再次访问服务器时,怎么知道该浏览器对应着哪个session呢?这时候就必须有个机制来解决,这个机制就是Cookie机制:在浏览器 访问服务器的时候,服务器给浏览器关联session的时候,还给浏览器分配一个独一无二编号,同时还给和浏览器 关联的session分配同样的编号,这个编号就是 sessionID。


19.session的两种实现方法:一种是通过Cookie机制,一种是通过URL重写。
注:URL重写就是当浏览器不支持Cookie的时候,通过URL的方式把sessionID发给服务器;在链接加上response.encodeURL()。


20.Httpsession session = request.getSession(true)表示的是,如果有session就拿到当前的session,没有就新建一个。


21.session可以存东西,也就是说session这块内存里头可以存放一些属性(对象),通过这个属性来进行一些判定(登录验证)。
注:session没有像Cookie拥有路径访问的问题。
注:同一个application下的Servlet/JSP可以共享同一个session(前提是在一个客户端窗口下的)。


22.request.getRequestDisPatcher(URL).forward(req,res)与thisServletContext.getRequestDisPatcher(URL).forward(req,res)的区别
1)前者可以相对路径,后者只能是绝对路径。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值