zoukankan      html  css  js  c++  java
  • JavaWeb详解

    四种范围对象(小——>大)

    pageContext  	        JSP页面容器(page对象)     当前页面有效
    request   		请求对象		 	同一次请求有效
    session   		会话对象			同一次会话有效
    appliation 		全局对象			全局有效(整个项目有效)
    
    以上4个对象共有的方法:
    Object getAttribute(String name):根据属性名,或者属性值
    void setAttribute(String name,Object obj) :设置属性值(新增,修改)
    setAttribute("a","b") ;//如果a对象之前不存在,则新建一个a对象 ;
    				 如果a之前已经存在,则将a的值改为b
    void removeAttribute(String name):根据属性名,删除对象
    
    a.
    pageContext 当前页面有效 (页面跳转后无效)
    
    b.
    request   同一次请求有效;其他请求无效 (请求转发后有效;重定向后无效)
    
    c.
    session  同一次会话有效  (无论怎么跳转,都有效;关闭/切换浏览器后无效 ; 从 登陆->退出 之间 全部有效)
    
    d.
    application
    	全局变量;整个项目运行期间 都有效 (切换浏览器 仍然有效);关闭服务、其他项目 无效
    
    ->多个项目共享、重启后仍然有效 :JNDI
    
    1.以上的4个范围对象,通过 setAttribute()复制,通过getAttribute()取值;
    2.以上范围对象,尽量使用最小的范围。因为 对象的范围越大,造成的性能损耗越大。
    

    jsp九大内置对象

    1、out:输出对象,向客户端输出内容
    2、request:请求对象;存储“客户端向服务端发送的请求信息”
    request对象的常见方法:
        String getParameter(String name) :根据请求的字段名key (input标签的name属性值) ,返回字段值value (input标签的value属性值)
        String[] getParameterValues(String name): 根据请求的字段名key ,返回多个字段值value  (checkbox)
        void setCharacterEncoding("编码格式utf-8") :设置post方式的请求编码  (tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8)
        getRequestDispatcher("b.jsp").forward(request,response) ;  :请求转发 的方式跳转页面   A - > B
        ServletContext getServerContext():获取项目的ServletContext对象
    3、pageContext  JSP页面容器
    4、session   会话对象
    5、appliation 全局对象
    6、response  响应对象
    7、config  配置对象(服务器配置信息)
    8、page   当前JSP页面对象(相当于java中的this)
    9、exception 异常对象
    

    重定向与请求转发

    重定向

    • 重定向是指由原请求地址重新定位到某个新地址,原有的request请求失效,客户端看到的是新的request请求返回的响应结果,客户端浏览器地址变为新请求地址。
    • 重定向通过HttpServletRequest对象的sendRedirect()方法实现,该方法会通过客户端去重新访问新指定的URL地址,其语法格式如下:
    public void sendRedirect(String location)throws java.io.IOException
    
    • 其中:
      location参数用以指定重定向的URL,它可以是相对路径或绝对路径。
    • 示例
    response.sendRedirect("/chapter02/index.jsp");
    
      表示重定向到当前应用程序(chapter02)的根目录下的index.jsp页面
    

    请求转发

    • 请求转发是指将请求再转发到其他地址,转发过程中使用的是同一个request请求,转发后浏览器地址栏内容不变。

    • 请求转发的过程发生在服务器内部,对客户端是透明的。服务器只能从当前应用内部查找相应的转发资源,而不能转发到其他应用的资源。
    • 请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发给另外一个资源,并让该资源对此请求进行响应。
    • RequestDispatcher接口有以下俩个方法:
      1、forward()方法: 将请求转发给其他资源。
      2、include()方法:将其他资源并入到当前请求中。
    • 请求转发语法
    RequestDispatcher dispatcher = request.getRequestDispatcher(String path);
    dispatcher.forward(ServletRequest request,ServletResponse response);
    
    • 其中:
      1、path参数用以指定转发的URL,只能是相对路径;
      2、request和response参数取值为当前请求所对应的HttpServletRequest和HttpServletResponse对象。

    • 请求转发示例

    RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp).forward(request,response);
    

    表示请求转发到当前项目站点的根目录下的index.jsp页面


    请求转发与重定向的区别

    重定向和请求转发都可以让浏览器获得另外一个URL所指向的资源,但俩者的内部运行机制有很大的区别:
    1、转发只能将请求转发给同一个Web应用中的组件;而重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,或者重定向到其他站点的资源;
    2、重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而请求转发过程结束后,浏览器地址栏保持初始的URL地址不变;
    3、重定向对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;请求转发在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为;
    4、请求转发调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;重定向调用者与被调用者使用各自的request对象和response对象,它们属于俩个独立的访问请求和响应过程。
    
    				请求转发				重定向
    
    地址栏是否改变		        不变				改变
    
    是否保留第一次		        保留				不保留	   --4种范围对象
    请求时的数据
    
    请求的次数			1				2
    
    跳转发生的位置		        服务端				客户端发出的第二次跳转
    
    转发:  
    	张三(客户端)     ->    【 服务窗口 A (服务端 )    ->  服务窗口B  】
    
    重定向:
    	张三(客户端) 	 -> 	 服务窗口 A (服务端 ) ->去找B
    
    	张三(客户端)     -> 	 服务窗口 B (服务端 ) ->结束
    

    cookie和session

    session(服务端)
    Cookie(客户端,不是内置对象):Cookie是由 服务端生成的 ,再发送给客户端保存。
    相当于 本地缓存的作用: 客户端(hello.mp4,zs/abc)->服务端(hello.mp4;zs/abc)
    作用:提高访问服务端的效率,但是安全性较差。
    
    session机制:
    客户端第一次请求服务端时,(jsessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息); 
    并且每个session对象 都会有一个唯一的 sessionId( 用于区分其他session);
    服务端由会 产生一个cookie,并且 该cookie的name=JSESSIONID ,value=服务端sessionId的值;
    然后 服务端会在 响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了 一个cookie(JSESSIONID);
    因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID - sessionID)
    
    客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID  去服务端的session中匹配sessionid,如果匹配成功(cookie  jsessionid和sesion sessionid),说明此用户 不是第一次访问,无需登录;
    
    cookie和session的区别:
    			session		cookie
    保存的位置	        服务端	        客户端
    安全性		        较安全		较不安全
    保存的内容	        Object		 String		
    
    有事评论区留言,也欢迎一起学习的伙伴
  • 相关阅读:
    030-PHP日期查询函数
    029-PHP取随机数
    028-PHP常用数学函数abs和acos和asin
    027-PHP编码和解码函数base64
    026-PHP常用字符串函数(三)
    025-PHP常用字符串函数(二)
    024-PHP常用字符串函数(一)
    023-PHP常用数组函数
    022-PHP数组排序asort
    021-PHP常用的数值类型判断函数
  • 原文地址:https://www.cnblogs.com/wt9866/p/13628994.html
Copyright © 2011-2022 走看看