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():获取响应对象。
- config对象: 该对象可以获取web.xml配置文件中的参数。
- 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)!