jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象

1.jsp中的九大域对象

1.1什么是内置对象?

在jsp帮你创建好的对象名,而这些对象无需自己在实例化。通过该对象名可以调用相应的类方法。

1.2九大内置对象是哪些?---面试

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第1张图片

1. out对象---作用:用来输出信息到浏览器。常见的方法: print();
2. request对象--作用:请求对象。  常见的方法:getParameter(); setCharacterEncoding("") , getSession():获取session对象。

3. session对象-->作用:表示一次会话 同一个用户共享存储在session中的数据。 常见的方法:setAttribute(key,value) getAttribute(key); removeAttribute(key),    invalidate();使当前session无效

4. response响应对象-->常用的方法: sendRedirect().  getWriter():获取out对象。

5.pageContext对象:表示当前页面对象。它可以共享当前页面的数据。可以获取其他8个内置对象。

6.application对象: 所有用户共享该对象存储的数据。
7.page对象: 表示当前页面的对象 this.
8.config对象: 用于获取servlet的配置信息。
9.exception对象: 异常对象。 如果该对象想使用必须网页是一个异常页面   

exception: 必须放在错误页面。

设置默认的错误页面:

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第2张图片

2.jsp的四大域对象

在不同的对象中存储的数据,作用的范围不同。

1. pageContext: 可以存储数据,作用范围是当前页面有效。
2. request: 可以存储数据,作用范围是同一个请求有效。---请求转发跳转
3. session: 可以存储数据, 作用范围是同一个会话有效。---用户信息
4. application: 可以存储数据,作用范围是同一个应用。

以后就把数据保存到application中,打错特错 因为保存的时间越长占用的资源越长。

理解修饰符public protected 默认 private  

有效期越长占用资源越多。 总结: 除了登录放在session中,其他放入request对象【注意:转发跳转】 

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第3张图片

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第4张图片

通过el表达式获取四个作用域对象中保存的指定内容。${key} 如果没有指定范围 默认从小到大扫描。如果找到匹配的key则终止扫描。

${pageScope|requestScope|sessionScope|applicationScope .key}

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第5张图片

3.请求转发和重定向

重定向: response.sendRedirect("重定向的路径");
请求转发: request.getRequestDispatcher("转发的路径") ;获取转发对象。
     request.getRequestDispatcher("转发的路径").forward(request,response);转发

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第6张图片

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第7张图片

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第8张图片

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第9张图片

3.1重定向和请求转发的区别

1. 重定向地址栏会发生改变,而且会产生新的请求对象。无法获取request保存的数据。
2. 请求转发地址栏不会发生改变,而且用的是同一个请求对象。可以获取request保存的数据。

4.session内置对象 --作用存放登录者的信息

表示一次会话。------凡是在会话中存放的数据只要会话不结束,里面存放的数据会一致存在。

默认登录成功后,把登录者的信息显示在每一个网页。 

    session会话对象中可以存放一些对象。 session会话中数据的周期,按照session会话的周期来走。----只要浏览器或者服务不重启。
      session.setAttribute(key,value); 往session会话中存放数据
      session.getAttribute(key); //从session会话中获取指定的数据。
      session.removeAttribute(key);//清除session会话中指定的数据。
      session.invalidate();//作废整个session会话。

主页只能在登录后才能访问。---->并显示登录者的信息。

 保存周期越长,占用的资源时间也就越长。 一般我们在开发时大部分数据习惯保存到request对象中。 只要少量的数据保存到session会话中。比如登录时用户的信息保存到session会话中 。

5.jstl标签库个EL表达式

EL表达式-->作用: 获取四大域对象中数据。

​ 语法: ${xxxScope.key}

我们原来通过xxx.getAttribute(key)也可以获取到四大域中的数据,为什么还要使用EL表达式,因为EL表达式语法更加简洁。而且后期可以与我们的jstl标签库一起使用。如果EL表达式没有找到对于的key,则返回空字符串 "".
EL表达式属于jsp或者后面讲解thymeleaf的语法

<%--
  Created by IntelliJ IDEA.
  User: ykq
  Date: 2022/5/16
  Time: 14:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


   <%
       //往四大域存储数据
       pageContext.setAttribute("name","pageContext的内容");
       request.setAttribute("name","request的内容");
       session.setAttribute("name","session的内容");
       application.setAttribute("name","application的内容");
   %>

通过getAttribute()获取四大域对象的内容
<%=pageContext.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=session.getAttribute("name")%>
<%=application.getAttribute("name")%>

通过el表达式获取四大域对象的内容
${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}

 el表达式 还可以省略scope ${key} 那么它会从哪个对象中获取数据。默认从pageContext扫描有没有对于的key,如果有则不继续往下扫描了,如果没有则继续往下扫描request, 以此类推。

  不指定范围

   ${name}

   ${name}

   ${name}

   ${name}

3.2 jstl标签库

里面提供了一些常用的标签---比如: 循环标签  判断标签。

使用这些标签的作用是为了减少jsp中java脚本代码的添加。 企业不建议大家在jsp中使用太多的<%%> 这样会使得网页比较乱。 这时就有人提供了JSTL标签库。

如何使用jstl标签库:

(1)web工程中引入jstl标签库的依赖

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第10张图片

(2)在使用jstl标签的jsp网页上引入该标签库

<%--jsp网页的头部引入jstl核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 (3)使用

<%@ page import="com.ykq.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: ykq
  Date: 2022/5/16
  Time: 15:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--jsp网页的头部引入jstl核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    Title


   <%
       //这里保存数据的目标就是为了操作方便。这些数据都是从数据库中查询。
       List list=new ArrayList<>();
       list.add(new User(1,"张胜男","北京",25,0));
       list.add(new User(2,"李四","杭州",35,1));
       list.add(new User(3,"王五","上海",15,1));
       list.add(new User(4,"赵六","郑州",55,1));
       request.setAttribute("users",list);//把集合保存到request对象中了。
   %>

   
       <%--
           if: 条件判断
             test:表示条件。如果条件成立则if语句块被执行。
       --%>
       
           
                    
                    
编号 姓名 地址 年龄 性别
${u.id} ${u.name} ${u.address} ${u.age}

6. servlet 控制层

6.1什么是servlet

就是java类代码。它可以介绍前端页面传递的数据,同时也可以把后端查询的结果响应给前端,以供前端能把数据展示到jsp网页。

6.2为什么使用servlet

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第11张图片

6.3如何使用servlet

(0) 引入servlet-api.jar包

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第12张图片

 (1) 创建一个类并继承HttpServlet父类。

public class HelloServlet extends HttpServlet {
}

 (2) 重写HttpServlet中service方法。---进行业务处理的。

 //可以接受前端传递的参数 也可以把后端查询的数据保存并让前端获取
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

 (3) 把自定义servlet配置到web.xml文件中.



    
    
    
        helloServlet
        com.ykq.servlet.HelloServlet
    
    
    
    
        helloServlet
        /hello
    

 测试:

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第13张图片

 6.4通过servlet完成了登录功能

jsp中的九大内置对象和四大域对象 请求转发和重定向 session内置对象_第14张图片

 跟之前的登录一样,无非把处理页面 换为 servlet    然后配置web.xml

你可能感兴趣的:(web,JAVA,linq,c#)