• jsp数据交互(一)


    pageContext可以获取其他八个内置对象,本身作为域对象来使用 

    pageContext.getRequest();

    pageContext.getResponse();

    pageContext.getOut() ;

    jsp内置对象,就是在编写jsp页面时,不需要做任何声明就可以直接使用的对象。 

    JSP内置对象——out

    out 对象是 jspWriter 类的实例
    out对象常用的方法
    void print(Object c)    向客户端打印数据 ( 将各种类型的数据转换成字符串 )
    void write(charser)     向客户端打印数据 ( 字符、字符数组、字符串 )
    void println(Object c)    向客户端打印数据(将各种类型的数据转换成为字符串)并
    换行

    JSP内置对象——request 

    request对象只要用于处理客户端请求
    request 对象的常用方法
    方法名称                                                                                  说明
    String getParameter(String name)                         根据页面表单组件名称获取页面提交方式 
    String[] getParameterValues(String name)             获取一组以上相同名称命名的表单组件提交的数据 
    void setCharacterEncoding(String charset)                   指定每个请求的编码,在调用
    request.getParameter() 方法之前进 行设定,可以解决中文乱码的问题
    RequestDispatcher getRequestDispatcher(String path)                 返回一个javax.servlet.RequestDispatcher对象,该对象的forward()方法用于转发请求
    产生乱码的原因
    1 jsp 页面本身的编码 pageEncoding="utf-8"
    2 、浏览器渲染页面采用的编码 contentType= "text/html; charset=utf-8"
    3 、服务器保存数据采用的编码 (request)
    //post 提交方式 解决乱码
    request.setCharacterEncoding("utf-8");
    //get 提交方式 解决乱码
    name= new String(name.getBytes( "ISO-8859-1" ), "utf-8" );
    // 修改配置文件 server.xml
    connectionTimeout="20000"
    redirectPort="8443" URIEncoding="UTF-8" />
    get post 的区别
    1.get是从服务器上获取数据, post 是向服务器传送数据,
    2.get传送的数据量较小,不能大于 2KB post 传送的数据量较大,一般被默认为不受限
    制。
    3.get安全性非常低, post 安全性较高。但是执行效率却比 Post 方法好。
    4.在进行文件上传时只能使用 post 而不能是 get
    Jsp页面中的 form 标签里的 method 属性为 get 时调用 doGet() ,为 post 时调用 doPost()
    GET方式提交 :地址栏(URL)会跟上参数数据。并以?开头,多个参数之间以&分割
    http://localhost:8080/项目名/路径地址?userName=admin&pwd=123456
    POST方式提交 :参数不会跟在URL后面,参数而是跟在请求的实体内容中(应该就是输入框之类
    的),没有?开头,多个参数之间以&分割

     JSP内置对象——response

    response 对象用于响应客户请求并向客户端输出信息
    response.sendRedirect( "loginSuccess.jsp?userName=" +name); // 重定
    request.getRequestDispatcher( "loginSuccess.jsp" ).forward(request, re
    sponse); // 转发
    转发跟重定向的区别
    1、从数据共享上
    转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递
    重定向是在客户端发挥作用,通过发送一个新的请求实现页面跳转
    Forword是一个请求的延续,可以共享 request 的数据
    Redirect开启一个新的请求,不可以共享 request 的数据
    在重定向方式下传递数据需要使用 连接在 URL 地址后面,多个值的使用采用 & 进行分
    2、从地址栏
    Forword转发地址栏不发生变化
    Redirect重定向地址栏发生变化 
    3、从运行方面来说
    Forword一般用于用户登陆的时候,根据角色转发到相应的模块
    Redirect一般用于用户注销登陆时返回主页面或跳转到其它的网站等
    4、从效率来说
    Forword:高 Redirect:低
    转发Forword只能转发到当前的 web 应用内的资源
    重定向Redirect可以跳转到当前的 web 应用中,或其他 web 应用,甚至是外部域名网站

    JSP内置对象——session

    一个会话就是用户通过浏览器与服务器之间进行的一次通话,它可以包含浏览器与
    服务器之间的多次请求,响应过程。简单地说就是在一段时间内,一个用户与 web
    服务器的一连串的交互过程。
    会话技术:
    1.cookie 技术 —— 会话数据保存在浏览器客户端
    2.session 技术 —— 会话数据保存在服务器端

    session技术

    session 对象常用的方法
    String getId()       获取 sessionid
    void setMaxInactiveInterval(int interval)     设定 session 的非活动时间
    int getMaxInactiveInterval()       获取session 的非活动时间,以秒为单位
    void invalidate()         设置session 对象失效
    void setAttribute(String key,Object  value)  以 key/value 的形式将对象保存到 session
    Object getAttribute(String key)        通过key 获取 session 中保存的对象
    void removeAttribute(String key)       从session 中删除指定名称 (key) 所对应的

     

    HttpSession 类,用于保存会话数据
    session 特点:会话数据保存在服务器端的内存中
    1 、创建 session 对象
    HttpSession session=request.getSession(true);
    HttpSession session=request.getSession();
    HttpSession session=request.getSession(false);
    前两者一样,去内存当中找对应的 session 对象,找到了就取出来,找
    不到的话就重新创建;第三个也是去内存中找对应的 session 对象,找
    到就取出,没有就返回 null
    服务器判断是否创建了 session 对象,是通过一个唯一的表示 sessionid
    来实现的。
    在客户端保存用户信息使用的是 cookie ,因此保存 sessionid 的方式也是
    使用 cookie 来实现的。
    通过超链接的打开的新窗口,新窗口的 session 与其父窗口的 session

     

    cookie 技术 补充知识
    cookie 的值默认保存在浏览器端的内存中
    cookie 类用于存储会话数据
    1 、创建 cookie 对象
    Cookie cookie=new Cookie("name","zhaojian");
    Cookie cookie=new Cookie("age","18");
    2 、将 cookie 发送给客户端
    response.addCookie(cookie);
    3 、获取客户端请求过来的 cookie 数据
    request.getCookie(cookie);
    例如: Cookie[] cookies= request.getCookies( );
    for(Cookie coo:cookies){
    System.out.println(coo.getName()+"="+coo.getValue());
    }
    4 setMaxAge() 设置 cookie 保存的有效时间 单位是秒 cookie.setMaxAge()
    正整数:表示 cookie 数据保存浏览器的缓存目录 ( 硬盘中 ) ,数值表示保
    存的时间
    负整数:表示 cookie 数据保存浏览器的内存中。浏览器关闭 cookie 就没
    零:表示删除同名的 cookie 数据
    5 setPath() 设置有效路径,只有在有效路径,客户端才会把 cookie 数据带过
    cookie.setPath(" 路径 ") 6 cookie 保存数据不能保存中文的字符串

    include指令

    可以将一些共性的内容写入一个单独的文件中,然后通过 include 指令引用该文件,
    从而降低代码的冗余问题,并且修改也更加方便。
    报错的状态码:
    301 永久重定向
    302 临时重定向
    304 服务端 未改变
    403 访问无权限
    200 正常 404 路径
    500 内部错误
    400 请求错误 - 客户端的错误

     

  • 相关阅读:
    面试题收集——Java基础部分(一)
    目标检测综述:基于至今先进深度学习的目标检测模型综述(附综述论文及代码下载)...
    java EE初阶 —— 线程的安全问题
    分布式监控系统——Zabbix(2)部署
    Mac电脑专业raw图像处理 DxO PhotoLab 7中文最新 for mac
    Linux C | Linux标准I/O编程
    C++20中的关键字
    3D游戏开发中的矩阵详解
    前端axios发送请求,在请求头添加参数
    增益与功率:lg|dB|dBm|mW计算
  • 原文地址:https://blog.csdn.net/weixin_47541976/article/details/126359731