JSP实现数据传递和保存 笔记分享

JSP实现数据传递和保存

回顾

搭建Web开发环境

  1. 服务器软件:Tomcat
    1. log目录 日志
    2. webapps目录 存放web程序 一个个的文件夹
    3. work目录 JSP文件翻译成的Java文件
  2. 实现静态网站的部署
  3. 实现动态网站的部署

初识JSP

  1. HTML代码(页面显示效果) + Java代码 = JSP页面
  2. JSP中的Java脚本
    1. 声明:<%! %> 可以编写变量声明 方法声明
    2. 脚本:<%%> 可以编写变量声明 调用方法等
    3. 表达式:<%= %> 可以用于向页面输出内容 能调用有返回值的方法和直接输出一些变量 结尾不能编写;号
  3. JSP的原理
    1. 第一次访问此页面时/改动后再次访问
    2. Tomcat的Jasper组件帮助你将JSP(模板)翻译成对应的Java文件
      1. 声明 -> Java类的成员位置内容
      2. 脚本 -> Java类的_jspService()方法内 局部内容
      3. 表达式 -> Java类的_jspService()方法内一个输出语句 out.print() out:PrintWriter 可以向浏览器页面进行输出内容
      4. HTML代码也都通过PrintWriter的write()帮你将页面展示出来
    3. 对Java文件进行编译
    4. 正常显示到浏览器上

JSP内置对象

1. 掌握request和response的使用

1.1 request和response的常用API

request:Java EE用于接收和处理请求信息的

  • 从请求中根据键取值:String getParamepter(String name);
  • 从请求中根据键获取多个值:String[] getParameterValues(String name);
  • 页面跳转(请求转发):RequestDispatcher getRequestDispatcher(String path相对地址);
    • void forward(request,response);
  • 在请求中携带数据:void setAttrbute(String name,Object value); 作用域request可以存储信息,但是此信息只能保证在同一个请求中有效。所以一般在request作用域中存储信息 都会建议使用请求转发来进行页面跳转。
  • 在请求中取出携带的数据:Object getAttribute(String name);
  • 获取项目的根路径:String getContextPath();
    • 例如:localhost:8080/day51-jsp-2/xxxx.jsp 的项目根路径是:day51-jsp-2

response:Java EE用于响应客户端的一个对象

  • 页面跳转(重定向):void sendRedirect(String path绝对地址<带有项目根路径>);

1.2 掌握解决请求中文乱码问题

GET请求:

  • 先解码再编码 每个都需要这么处理

  • 编辑server.xml中的配置 将URL编码更改为UTF-8

    <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
    
  • 升级到8.0.0版本以后的Tomcat

POST请求:

  • 先解码再编码
  • request.setCharacterEncoding(“UTF-8”)

1.3 掌握转发和重定向的区别

相同点:都可以实现页面跳转

不同点:

  • 请求转发:它是服务器内部的资源跳转,只能跳转到服务器内部的一些页面(资源)
    • 请求地址不改变:例如:登录界面 -> 处理登录的页面 -> 转发到其他页面(登录页面) 地址还是处理登录的页面
    • 请求转发是一次请求的多次跳转
  • 重定向:它是可以跳转到任意的资源地址。 例如你可以用它跳转到百度网站。
    • 地址会改变为对应的跳转地址。
    • 重定向是开启新的请求,与之前请求无关

联想借钱案例。

2. 掌握session对象的使用

session也是JSP的内置对象之一,其实它是HttpSession的实例。

生命周期: 一次会话是由第一次访问服务器时,Tomcat分配的。只要没有完全关闭浏览器,都是同一个会话。

  • 不同浏览器,会话独立。

  • 默认从无操作起会话有效期为:30分钟

    • 修改全局的web.xml

        <!-- ==================== Default Session Configuration ================= -->
        <!-- You can set the default session timeout (in minutes) for all newly   -->
        <!-- created sessions by modifying the value below.                       -->
      <session-config>
          <session-timeout>30</session-timeout>
      </session-config>
      
    • 在自己的web.xml中单独修改此信息,优先级会比它的高

它表示一次会话,多次请求和响应的过程就是会话。

  • void setAttribute(String name,Object obj); 在一次会话中有效存储数据(会话共享数据) session作用域
  • Object getAttribute(String name);
  • 每一次会话都会有一个会话id,获取会话id:String getId();
  • 作废,销毁session:void invalidate();

3. 掌握cookie和session的区别

3.1 Cookie的概述

HTTP协议:是用于请求和响应的一种协议,但是它是无状态的协议。

cookie是浏览器用于在本地存储一些网站状态的。

  • 网站打开之后,登录页面就存储着登录用户名
  • 本地的搜索记录
  • 表单数据

常用API:

  • 创建Cookie:Cookie(String name,String value);
  • 重新设置值:cookie.setValue(String value);
  • 获取键名:String getName();
  • 获取值:String getValue();
  • 设置有效期:setMaxAge(int seconds); 如果不设置它 cookie是一种会话级的内容,意味着和session一样关闭就消失了。
  • 删除Cookie:可以通过setMaxAge(0) 删除 只需要到时候将name相同的Cookie设置后再响应回去就会覆盖
  • 设置cookie有效路径:setPath(String path);
    • 例如:我们在localhost:8080/smbms/cookie/index.jsp 存储了一个cookie 默认是在/cookie路径下的内容可以取到cookie

向浏览器存储Cookie:

  • response的API:addCookie(Cookie cookie);

从浏览器取出Cookie:

  • request的API:Cookie[] getCookies();

3.2 Cookie和Session的区别

位置不同:

  • Cookie是处于浏览器端
  • Session是处于服务器端

安全性不同:

  • Cookie由于在浏览器端 所以极其容易被窃取,不安全
  • Session是处于服务端 所以获取等不容易 相对比较安全

生命周期不同:

  • Session是从客户端第一次请求开始,由服务器分配,当浏览器完全关闭或者无操作超时则销毁
  • Cookie是由服务器端响应回来之后才开始生效,默认是会话级的Cookie,但是也可以设置为持久级。

存储值不同:

  • Session可以存储Object类型
  • Cookie只能存储String类型

Session实际上就是通过Cookie而产生的一种技术,HTTP是无状态协议,无法保存网站和客户端之间的联系,所以我们客户端第一次请求服务器时,服务器就会根据客户端产生一个唯一的session id,并且将其通过cookie的形式缓存到客户端。当下次请求时,客户端会自动将cookie通过请求头传递给服务器,服务器识别到此信息之后找到对应的session内容然后进行其他操作。

4. 掌握application对象的使用

四大作用域:用于在JSP中共享数据

  • page作用域

    • 仅在当前页面有效 this
  • request作用域

    • 一次请求内,同一个request
  • session作用域

    • 一次会话内,同一个session
  • application作用域

    • 全局,服务器开启产生 服务器关闭销毁

注:笔记思路来自查老师!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值