自学内容网 自学内容网

JavaWeb03

1. session的原理

在这里插入图片描述

2. 正文

1. jsp中内置的9大对象
2. 跳转的方式
3. jsp四大域对象
4. EL表达式
5. jstl标签库
6. servlet

3. jsp中内置的9大对象

在jsp中内置了9个对象,所谓的内置就是指该对象无需创建即可使用的对象。而且这些内置对象的名称必须固定。

1.out输出对象-属于JspWriter

print():输出
flush():刷新
close():关闭

2.request请求对象–属于HttpServletRequest

getParameter(): 获取请求的参数
setCharacterEncoding(""):设置请求的编码
getRemoteAddr():获取远程访问者的ip
getMethod():获取请求方式
getSession():获取session对象

3.response响应对象–属于HttpServletReponse

sendRedirect(""):重定向
getWriter():获取out对象

4.session会话对象–属于HttpSession

setAttribute()
getAttribute()
removeAttribute()

5.page对象 页面对象 每个jsp网页都存在该对象–理解为this。

6.application对象 应用对象。它里面也可以保存数据,周期: 只要服务器不关闭。该对象中存在的数据一致存在。

7.pageContext:网页上下文对象,通过该对象可以获取其他8个对象。

1. getRequest():获取请求对象
2. getResponse():获取响应对象。
  1. config对象: 该对象可以获取web.xml配置文件中的参数。

在这里插入图片描述

  1. exception: 异常对象, 该对象必须在错误页面才会存在。

在这里插入图片描述

4. 跳转方式

第一种: 重定向redirect.
第二种: 请求转发forward.

重定向

地址栏会发生改变,而且会生成一个新的请求对象。

在这里插入图片描述

请求转发

地址栏不会改变,而且不会生成新的请求对象。

request.getRequestDispatcher("/b.jsp").forward(request,response);//转发跳转

在这里插入图片描述

因为转发跳转—节省内存。

5. jsp四大域对象

在jsp中存在四个对象用来保存客户的数据,只是他们的保存周期不同。

pageContext: 当前网页有效。

request: 同一个请求有效。

session: 同一个会话有效 保存当前用户的信息

application: 同一个应用有效。


setAttribute(key,value):保存数据
getAttribute(key):获取数据
removeAttribute(key):移除数据

保存周期越长,占用的内存时间越长。 一般都使用request. 但是当前用户的信息保存到session.

a.jsp

    <%
//        response.sendRedirect("/b.jsp");//重定向跳转
//        request.getRequestDispatcher("/b.jsp").forward(request,response);//转发跳转
        pageContext.setAttribute("k1","v1");
        request.setAttribute("k2","v2");
        session.setAttribute("k3","v3");
        application.setAttribute("k4","v4");
        //request.getRequestDispatcher("/b.jsp").forward(request,response);
        //response.sendRedirect("/b.jsp");//重定向跳转
    %>


   pageContext的内容:<%=pageContext.getAttribute("k1")%><br>
   request的内容:<%=request.getAttribute("k2")%><br>
   session的内容:<%=session.getAttribute("k3")%><br>
   application的内容:<%=application.getAttribute("k4")%><br>

b.jsp

pageContext的内容:<%=pageContext.getAttribute("k1")%><br>
request的内容:<%=request.getAttribute("k2")%><br>
session的内容:<%=session.getAttribute("k3")%><br>
application的内容:<%=application.getAttribute("k4")%><br>

访问a.jsp页面 【保存数据】 ----->

6. EL表达式

它可以获取上面四个域对象中的数据。但是他的语法比之前获取四个域对象的方式简单。而且不需要使用<%%>.

语法: ${scope.key}:获取指定域中的key值。

简写: ${key}:默认从pageContext扫描如果找到对应的key,则不会继续扫描。 如果没有找到对应的key则继续扫描request。直到找到。

使用

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2024/12/5
  Time: 9:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
//        response.sendRedirect("/b.jsp");//重定向跳转
//        request.getRequestDispatcher("/b.jsp").forward(request,response);//转发跳转
        pageContext.setAttribute("k1","v1");
        request.setAttribute("k1","v2");
        session.setAttribute("k1","v3");
        application.setAttribute("k1","v4");
        //request.getRequestDispatcher("/b.jsp").forward(request,response);
        response.sendRedirect("/b.jsp");//重定向跳转
    %>

<hr>

   pageContext的内容:<%=pageContext.getAttribute("k1")%><br>
   request的内容:<%=request.getAttribute("k1")%><br>
   session的内容:<%=session.getAttribute("k1")%><br>
   application的内容:<%=application.getAttribute("k1")%><br>
<hr>
    <h1>使用EL表达式获取四大域对象</h1>
    pageContext的内容:${pageScope.k1}<br>
    request的内容:${requestScope.k1}<br>
    session的内容:${sessionScope.k1}<br>
    application的内容:${applicationScope.k1}<br>
<hr>
<h1>简写方式</h1>
    pageContext的内容:${k1}<br>
    request的内容:${k1}<br>
    session的内容:${k1}<br>
    application的内容:${k1}<br>
</body>
</html>

目标: 把jsp中出现的java替换了。

7. jstl标签库

该标签库中提供了大量的标签,这些标签可以完成相应的功能。比如:if标签 for标签 redirect. 目的替换掉java代码。

使用

1.把jar放入项目中

在这里插入图片描述

2.在网页使用引入对应的标签库

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2024/12/5
  Time: 11:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setAttribute("age", 17);//存放数据到request中
    String[] str = {"玩游戏", "看电影", "唱歌", "打篮球"};
    request.setAttribute("hobbys", str);
%>

<%--jstl可以结合el表达式--%>
<c:if test="${age>=18}">
    <h3>成年</h3>
</c:if>
<c:if test="${age<18}">
    <h3>未成年</h3>
</c:if>

<hr>

<ul>
    <%--items:表示要变量的对象  var:每次变量把元素赋值的变量名。--%>
    <c:forEach items="${hobbys}" var="h">
        <li>${h}</li>
    </c:forEach>
</ul>

</body>
</html>

8. servlet

8.1 什么是servlet?

在Java中,Servlet是用于创建动态Web内容的服务器端组件。Servlet运行在Tomcat服务器上,可以响应客户端(通常是Web浏览器)发出的请求。Servlet的生命周期由服务器管理,主要包括初始化、请求处理和销毁三个阶段。

Servlet是一种Java类,它实现了javax.servlet.Servlet接口。Servlet主要用于处理HTTP请求和生成HTTP响应,可以用于创建动态网页、处理表单数据、管理会话等。

--概述---
servlet它就是一个类,该类的主要作用: 处理请求和生成响应的。它有tomcat来管理其生命周期。

8.2 为什么使用servlet?

在这里插入图片描述

作用: 等价于处理页面。 目的也是为了不让网页中在出现关于java的代码。

凡是java代码–应该放在src中,凡是网页代码web下。

8.3 使用servlet

第一步创建一个类并继承HttpServlet:

//创建一个类并继承HttpServlet
public class HelloServlet extends HttpServlet {
    //重写方法:
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    }
}

第二步:该servlet交于tomcat管理。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
   <!--注册指定的servlet类:该类交于tomcat容器管理-->
    <servlet>
        <servlet-name>a</servlet-name>
        <servlet-class>com.ykq.servlet.HelloServlet</servlet-class>
    </servlet>
    <!--请求路径要和servlet映射在一起-->
    <servlet-mapping>
        <servlet-name>a</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
</web-app>

第三步: 发送请求

http://localhost:8080/hello

8.4 解决登录处理页面的问题

在这里插入图片描述

8.5 可以注解完成servlet的注册和映射关系

要求web版本必须在3.0以后才能用。咱们现在都是用的4.0

在这里插入图片描述


原文地址:https://blog.csdn.net/Flipped_275/article/details/144458118

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!