⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servlet_jd0801a.txt~

📁 详细讲述Servlet
💻 TXT~
📖 第 1 页 / 共 2 页
字号:
    2) Http协议的无状态性    Http协议是一种无状态的协议,当客户端向服务器端发起一次请求,服务器不会来区分和保存客户端的状态信息,这样可以提供服务器的处理能力和提高response的响应灵敏度。     缺点: 服务器端无法跟踪和保存客户端的  状态信息2、跟踪和保存客户端状态信息的技术   1) Cookie        a) Cookie是在服务器端构造的对象,在Cookie中可以以文本形式保存客户端的状态信息(如登陆的用户名和密码),并将Cookie对象放置在response中返回并保存在客户端。     b) 在服务器端生成Cookie的方式	//构造Cookie对象      Cookie cookie =         new Cookie("cookieName","cookieValue");      cookieName --> String类型      cookieValue --> String类型      如: Cookie cookie =           new Cookie("username","jack");      //设置Cookie保存在客户端的存活期      cookie.setMaxAge(int time);      time --> 存活期的时间(单位:秒)               默认为-1      time > 0: Cookie被保存在客户端的某个                文件中      time < 0: Cookie被保存在客户端的                浏览器中      time = 0: 表示删除浏览器中同名的Cookie     注意: 当time > 0时,若超过了Cookie的     存活期,那么在下次请求时,浏览器就     不会把Cookie放置在request中发送到     服务器端。          当time < 0时,在关闭浏览器后,	  那么保存在浏览器中Cookie就	  不存在了。     //将Cookie放置在response中并返回			到客户端	response.addCookie(cookie);    b) 在服务器端获得从客户端发送过来       所有Cookie       Cookie[] cookies =            request.getCookies();    c) Cookie功能可以被浏览器屏蔽        目的: 解决安全隐患问题	在Cookie被屏蔽后,服务器端返回的Cookie不会被浏览器接受,浏览器也不会把保存在客户端的Cookie放在request中发送到服务器端。String time =   request.getParameter("time");  int second = 0;  if(time.equals("one day")){     second = 24*3600;  }   2) session(会话)-->属于HttpSession类型     a) 获得session的方式        (a1)HttpSession session = 	       request.getSession();	   当第一次调用此方法时,容器会先去获得从客户端发送过来的Cookie,从中取出jsessionid,若没有取到的话,容器会构造一个新的session对象并为之分配一个唯一的jsessionid,并将这个session对象放置在由容器构造的HashMap中(jsessionid,session对象引用),同时紧接着构造一个Cookie对象来存放jsessionid的值,格式如下:Cookie cookie = new Cookie("JSESSIONID","jsessionid的值");将cookie放置在response中返回到客户端保存在当前浏览器中。response.addCookie(cookie);   当第二次去调用此方法时,容器就可以从客户端发送来的Cookie中获得jsessionid,然后从HashMap中取出原来构造的session对象。          (a2) HttpSession session = 	      request.getSession			(boolean creat);	 若create=true: 同上	 若create=false: 当容器获取不到Cookie中的jsessionid时,它不会去构造一个新的session对象,此方法直接返回null。  b) session的使用方式      b1) 往session中存放信息        session.setAttribute(key,value);      b2) 从session中获得信息        Object o = 		session.getAttribute(key);      b3) 将session中的信息删除        session.removeAttribute(key);   c) session的特点    c1) 一个浏览器对应一个session(一个    浏览器中存放当前session的jsessionid)    c2) 在同一个浏览器中,    一个session可以跨越多个请求,多个请求    可以共享同一个session。若多个请求要    共享的信息可以放置在session中。    c3) session是依赖于Cookie的,若Cookie    功能被屏蔽后,那么session就不好用了。    使用建议: 将信息尽量存放在request中,    存放在session中的信息会占有系统资源的。   d) session的失效      d1) session.invalidate()      d2) 关闭浏览器后,session在30分钟后         自动失效      d3) 让用户不在页面上作任何操作,默认      也是在30分钟后失效      d4) 在web.xml中设置失效时间         <session-config>           <session-timeout>time(分钟)</session-timeout>	 </session-config>    所谓失效:容器会将session对象从HashMap中             删除   e) 存放信息的四种范围      applicationScope:          --> 对应于ServletContext      (针对整个Web应用,可以跨越多个session)      sessionScope:          --> 对应于session	  (可以跨越多个request)      requestScope:         --> 对应于request	 (可以跨越多个page)      pageScope:         --> 对应于PageContext	 (一个页面或者一个Servlet范围)3、Cookie和session的比较   1) 两者都是用来跟踪和保存客户端			的状态信息的   2) Cookie是在服务器端创建,在客户端保存      session是在服务器端创建,在服务端保存   3) Cookie中只能存放String类型,而session   中可以存放Object类型。   4) session是依赖于Cookie的,jsessionid   还是存放在Cookie中保存在客户端的。   3) URL重写      a) 功能: 解决Cookie被浏览器屏蔽的问题      b) URL重写的方式:         String newURL =            response.encodeURL(oldURL);	  或者	 String newURL = 	   response.encodeRedirctURL(oldURL);      c) newURL的格式:          newURL = oldURL;jsessionid=*****	 	 注: a) 当客户端以newURL向服务器发起请求后,容器会从newURL中获得jsessionid,然后根据jsessionid从由容器维护的HashMap中找到对应的session对象。            b) 只要一个地方的URL重写后,那么	   其它地方的URL都要重写,目的就是	   将jsessionid维护下来,将其发送	   到服务器端。	   第六章 过滤器1、过滤器    功能: 对客户端的请求进行过滤,它位于客户端和服务器端资源的中间。2、过滤器采用预先装载,和Servlet一样,由容器管理其生命周期,在整个生命周期中实例只有一个,init()、destroy()调用一次,doFilter()被调用多次。3、多个过滤器形成一个过滤器链,调用次序和web.xml中过滤器的描述顺序一致。4、包装器(wrapper)   功能:对request或者response重新包装,可以   修改request或者response中信息。         第七章 监听器1、监听器    监听器也采用预先装载,它的生命周期也受容器管理,只有一个实例,在Web应用卸载或停止Web Server时实例被容器销毁。       ~/.mozilla/firefox/ zy3z6dpk.default/cookies.txt      ls -al .bashrchttp://localhost:8080/examples/servlet/SurveyServlet?name=skiing&level=1&years=15request.getRequestURL()-->http://localhost:8080/examples/servlet/SurveyServletrequest.getQueryString()-->name=skiing&level=1&years=15requsst.getContextPath()-->/examplesHttpServletRequest request;LoginServlet:request.setAttribute("user", user);ShowUserServlet:User user = (User)request.getAttribute("user");      servlet_jd0801a(web project)   http://localhost:8080 --> 定位WebServer   /servlet_jd0801a --> 定位Web应用   /basic/first.html --> 定位html   src/com.briup.basic/FirstServlet.java		     extends HttpServlet		      /SecondServlet.java		     extends GenericServlet		     /ImageServlet.java      /com.briup.form/RegisterServlet.java                      url: /form/register		     /LoginServlet.java		      url: /form/login		     		     /FindAllUserServlet.java		      url: /form/findall		     /DeleteUserServlet.java		      url: /form/delete     /com.briup.life/InitServlet.java		      url: /life/init	com.briup.resource		/DispatchServlet.java		url: /resource/dispath	         /Dispatch2Servlet.java		url: /resource/dispath2    src/com.briup.status/CookieServlet.java		 url: /status/cookie		       		       /SessionServlet.java		  url: /status/session		       		       /Session2Servlet.java		  url: /status/session2                     /UserLoginServlet.java		     url:/status/userlogin		     /SuccessServlet.java		     url:/status/success		     /ListServlet.java		     url:/status/list    src/com.briup.filter/EncodeFilter.java                     implements Filter		        /EncodeServlet.java		     url: /filter/encode		        			/LoginFilter.java    src/com.briup.listener/Listener.java                          /ListenerServlet.java			  url: /listener/test         implements 6个接口	    WebRoot/status/login.html                  /userLogin.htmlurl: /basic/imagehttp://localhost:8080 -->定位WebServer/servlet_jd0801a -->定位Web应用/basic/first --> 定位Servlet(FirstServlet)	 http://localhost:8089/servlet_jd0801a/basic/firsthttp://localhost:8080/servlet_jd0801a-->contextPath(定位Web应用)/form/register-->servletPath(定位Servlet)http://localhost:8089/servlet_jd0801a/form/register.htmlGET /servlet_jd0801a/form/register?username=www&password=444444444&gender=male&age=3432&city=beijing&hobby=football&msn=dddd&description=dfdsfsdf&Submit=%E6%8F%90%E4%BA%A4 HTTP/1.1http://localhost:8089/servlet_jd0801a/basic/register.html提交表单后:http://localhost:8089/servlet_jd0801a/basic/registerhttp://localhost:8089/servlet_jd0801a/form/form/registerpublic class GenericServlet{  private ServletConfig config =null;  public void init(ServletConfig config){     this.config = config;	  }  public ServletConfig getServletConfig(){	return config;  }}http://localhost:8089/servlet_jd0801a/resource/dispatch2http://localhost:8088/servlet_jd0711/status/welcomehttp://localhost:8088/servlet_jd0711/status/login.htmlhttp://localhost:8088/servlet_jd0711/status/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -