首页 > 编程语言 >2022-08-31 第二小组 张晟源(javaweb,el,jstl,分页查询)

2022-08-31 第二小组 张晟源(javaweb,el,jstl,分页查询)

时间:2022-08-31 19:22:48浏览次数:64  
标签:el javaweb 标签 08 application session JSP pageContext 页面

JavaWeb

一,JSP

JSP(全称Java Server Pages),运行在服务端的语言

<%  
   // java 代码
   %>

1. JSP 脚本只能有 java 代码,在访问 JSP 时, JSP 引擎翻译 JSP 页面中的脚本

2. JSP 脚本片段中的 java 代码必须严格遵守 java 的规则

3. 一个 JSP 页面可以有多个脚本片段

4. 多个脚本中的片段中的代码可以互相访问

 

JSP 生命周期

  • 编译阶段
  • 初始化阶段
  • 执行阶段
  • 销毁阶段

 

JSP 和 servlet区别

1. JSP 本身是一个 servlet

2. JSP 侧重于试图展示, servlet 侧重于逻辑处理

3. 现有的 servlet ,后有的 JSP

 

JSP 表达式

<% int num = 1; %>
<%= num  %>

 

JSP 声明片段

<%!  
    int x = 10;
    public void fun(){
    
    }
%>

<%-- 注释 --%>

 

 JSP 标签

1. 内置标签

  • jsp:include:引入指定页面
  • jsp:forward:转发页面
  • jsp:param:传参数
<jsp:include page="hello.jsp"></jsp:include>
<jsp:forward page="hello.jsp></jsp:forward>

2. JSTL 标签,需要导入 JSTL 标签

3. 自定义标签

 

JSP 指令标签

指令 描述
<%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include ... %> 包含其他文件
<%@ taglib ... %> 引入标签库的定义,可以是自定义标签

 

 JSP 的 include 标签和 include 指令的区别

include 标签:先把要引入的页面编译,再合并

include 指令:先把要引入的页面合并,再编译

 

JSP 的四大作用域

1. 当前页(pageContext):一个属性只能在一个页面种获取

2. 一次请求(request):一个页面中设置的属性,范围是一次请求

3. 一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到

4. 整个 web 应用(application):在这个服务器上,当前项目下的任何一个

  @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*
            pageContext--PageContext
        *   request------HttpServletRequest
        *   session------HttpSession
        *   application--ServletContext
        * */
        System.out.println(req.getAttribute("request"));
        System.out.println(req.getSession().getAttribute("session"));
        System.out.println(req.getServletContext().getAttribute("application"));
    }
<%
    pageContext.setAttribute("pageContext","pageContext");
    request.setAttribute("request","request");
    session.setAttribute("session","session");
    application.setAttribute("application","application");
%>

<h1>pageContext:<%= pageContext.getAttribute("pageContext")%></h1>
<h1>request:<%= request.getAttribute("request")%></h1>
<h1>session:<%= session.getAttribute("session")%></h1>
<h1>application:<%= application.getAttribute("application")%></h1>

<jsp:forward page="jsp04_copy.jsp"></jsp:forward>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<h1>jsp05</h1>

<h1>pageContext:<%= pageContext.getAttribute("pageContext")%></h1>
<h1>request:<%= request.getAttribute("request")%></h1>
<h1>session:<%= session.getAttribute("session")%></h1>
<h1>application:<%= application.getAttribute("application")%></h1>

</body>
</html>

 

JSP 的九大内置对象                        

通俗说法:不需要创建,直接能用

对象 描述
request HttpServletRequest类的实例
response HttpServletResponse类的实例
out PrintWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page 类似于Java类中的this关键字
exception exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象

 

错误转发

<error-page>
    <error-code>500</error-code>
    <location>/500.html</location>
</error-page>

<error-page>
    <exception>java.lang.NullPointException</exception>
    <location>/空指针.html</location>
</error-page>

 

EL 表达式

EL 全名为Expression Language。主要用于

  • 获取数据
  • 执行运算
  • 获取 web 开发常用对象
  • 调用 java 方法
 <%
        request.setAttribute("name","zhangsan");
        session.setAttribute("name","lisi");
        pageContext.setAttribute("age",30);
    %>

<%--    <input type="text" value="<%= request.getAttribute("name1") == null ? "" : request.getAttribute("name1")%>">--%>
    <input type="text" value="${sessionScope.name}">
    <hr>
    ${age eq 1}
    <hr>
     
    取参数:${param.username},${paramValues.hobby},${initParam.password}

EL表达式的缺陷:

1、只能读,不能写

2、不支持流程控制语句

EL表达式的内置作用域对象
    pageContext
    requestScope
    sessionScope
    applicationScope

 

JSTL

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

先引用

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

标签 描述
<c:out> 用于在JSP中显示数据,就像<%= ... >
<c:set> 用于保存数据
<c:remove> 用于删除数据
<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if> 与我们在一般程序中用的if一样
<c:choose> 本身只当做<c:when>和<c:otherwise>的父标签
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach> 基础迭代标签,接受多种集合类型
<c:forTokens> 根据指定的分隔符来分隔内容并迭代输出
<c:param> 用来给包含或重定向的页面传递参数
<c:redirect> 重定向至一个新的URL.
<c:url> 使用可选的查询参数来创造一个URL

案例:

    <%--  向指定的作用域中设置值  --%>
    <c:set scope="session" var="name" value="zhangsan"></c:set>
    <c:set scope="session" var="age" value="20"></c:set>
    ${sessionScope.name}

    <hr>
    <c:if test="${sessionScope.age >= 18}">可以观看!</c:if>
    <c:if test="${sessionScope.age < 18}">禁止观看!</c:if>

    <hr>
    <c:choose>
        <c:when test="${sessionScope.age eq 18}">
            你已经年满18岁,可以签署劳动合同了!
        </c:when>
        <c:when test="${sessionScope.age lt 18}">
            你好没有满18岁!
        </c:when>
        <c:otherwise>
            你已经是大人了!!!
        </c:otherwise>
    </c:choose>
    <hr>
    <c:forEach begin="1" end="10" step="2" var="i" varStatus="stat">
        ${i} ----- ${stat.first} <br>
    </c:forEach>

 

JSP 和 JSTL 分页查询案例

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/8/31
  Time: 16:19
  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>
<%--
    分页查询:
    1、总记录数
    2、总页数
    3、每页显示的记录数
    4、每页展示的数据集合
    5、导航栏的页码 【1,2,3,4,5】
    6、是否是第一页
    7、是否是最后一页
    8、当前页
 --%>

<h1><a href="${pageContext.request.contextPath}/page.do?pagenum=1">加载分页导航</a></h1>
当前页:【${requestScope.pagenum}】,总页数【${requestScope.pageCount}】
<hr>
<c:if test="${requestScope.pagenum ne 1}">
    <a href="${pageContext.request.contextPath}/page.do?pagenum=1">首页</a>
    <a href="${pageContext.request.contextPath}/page.do?pagenum=${requestScope.pagenum - 1}">上一页</a>
</c:if>
<c:if test="${requestScope.pagenum eq 1}">
    <span>首页</span>
    <span>上一页</span>
</c:if>
<c:forEach begin="1" end="${requestScope.pageCount}" var="i">
    <c:if test="${requestScope.pagenum eq i}">
        <span>${i}</span>
    </c:if>
    <c:if test="${requestScope.pagenum ne i}">
        <a href="${pageContext.request.contextPath}/page.do?pagenum=${i}">${i}</a>
    </c:if>
</c:forEach>
<c:if test="${requestScope.pagenum ne requestScope.pageCount}">
    <a href="${pageContext.request.contextPath}/page.do?pagenum=${requestScope.pagenum + 1}">下一页</a>
    <a href="${pageContext.request.contextPath}/page.do?pagenum=${requestScope.pageCount}">尾页</a>
</c:if>
</body>
</html>

 

标签:el,javaweb,标签,08,application,session,JSP,pageContext,页面
From: https://www.cnblogs.com/shenmimao/p/16641684.html

相关文章

  • AtCoder ABC 259 F Select Edges
    题意:​ 给出一棵树,边带权,对于点i,最多保留d[i]条边,可以被分成连通块,请问边权和最大是多少分析:​ 因为可以被分成连通块,我们就可以对点i划分两种状态。第一种是点i不与父......
  • Elasticsearch 快照与恢复-快照仓库 repository
    Elasticsearch中的一个快照即一个运行时的集群备份。快照能在以下场景使用。不停机的情况下周期性的备份集群。数据被删除或者硬盘故障的情况下还原数据在集群之间传......
  • element-ui tree权限树
    在权限中父子集不关联,一开始,我以为default-checked-keys值不对,最后看了文档,原来是check-strictly被开启了 <el-treeref="menu":......
  • 你以为Shell只是命令行?读懂这篇文,给你的工作赋能
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取Shell是什么呢?很多人以为的Shell就是命令行,一条条可以百度出来的命令行。而简历上你只会写熟......
  • 20220829 第一组 于芮 Vue坏人Tomcat入门
     小白成长记——第三十七天    这几天的主要学习内容就是Vue以及简单的Tomcat在ideal中的配置,总体来说说学习内容很多,每天都很充实,时间都用来学习,整个人都很开心......
  • 08. Prometheus - 查询持久化与服务发现
    查询持久化前面编写的PromQL都是一次性的,下次使用需要重写编写。为了方便以后拿来即用,Prometheus提供了在配置文件中的持久化方案。cd/ezops/service/prometheus/con......
  • php yield理解
    使用yield之前functionactionIndex($message='helloworld'){$valuesArray=[];//获取初始内存使用量echo'开始'.round(memory_get_usage()/102......
  • 花了两天时间搞定的bug:Unable to convert the Pixel Data as the 'pylibjpeg-libjpeg'
    BUG发生场景:在使用Pydicom包读取含下列压缩类型中的JPEGLossless(Process14,SV1)的dcm图像时,由下图可知需要安装GDCM或者pylibjpeg才能进行正常读取。然而,笔者不仅仅安......
  • 2022-08-31
    1、因为.trimmed()方法不能去除字节之间的空格,而只能去除整个数据包的前后空格,所以为了方便起见而又不脱离方便人阅读的情况下,需要在写入txt时不能使用.toHex(‘’),也就是......
  • 从安装开发环境到第一个“hello world”
    安装Java8为什么要安装java8?java8和小破站的教程同步。安装方法:1.官网安装(我踩雷了,下载得慢,不过最后安装成功了!)2.镜像网站:清华镜像3.公众号(网上的全是套路了)4.我的......