JavaWeb程序设计《实训四(EL和JSTL)第七章》

目录

一、IDEA中打开实训所需项目(chapter07)。

(1)学习通下载部分源代码(需修改)

(2)在IDEA中打开该项目(选择chapter06目录)

(3)点击信任项目(chapter07),即可打开

(4)整体的项目(chapter07)结构

二、初步了解本章需要学习的东西。(会的可跳过)

三、配置实训项目(chapter07)的所需环境。

如Tomcat的安装和启动,请前往前边篇博客《实训二——chapter05项目》中查看。

本项目(chapter07)不需要手动导入(servlet-api.jar)这个jar包。该项目中可以通过目录或者项目结构的库,看到已经存在。如下图显示。

本项目还需要自己导入对应的jsp-api.jar包。否则后面会出现问题!!具体如何操作,请看上篇文章。

四、回到IDEA之前打开的项目,修改和补充各个目录下对应的代码。

在src目录下,找到cn.itcast.servlet目录下——>找到MyServlet.java。按照书本P140添加补充即可。

在web目录下——>找到myjsp.jsp。按照书本P140(文件7-3)添加补充即可。

在web目录下——>找到pageContext.jsp。按照书本P145~P146添加补充即可。

在web目录下——>找到scopes.jsp。按照书本P146添加补充即可。

在web目录下——>找到param.jsp。按照书本P147添加补充即可。

在web目录下——>找到cookie.jsp。按照书本P148添加补充即可。

在web目录下——>找到initParam.jsp。按照书本P148添加补充即可。web.xml文件不需要修改,项目中已经提供。

在web目录下——>找到test.jsp。按照书本P151添加补充即可。如下载和导入JSTL的jar包、配置项目中已经完成。

在web目录下——>找到c_out1.jsp。按照书本P152添加补充即可。

在web目录下——>找到c_out2.jsp。按照书本P152~P153添加补充即可。

在web目录下——>找到c_if.jsp。按照书本P154添加补充即可。

在web目录下——>找到c_choose.jsp。按照书本P155添加补充即可。

在web目录下——>找到c_foreach1.jsp。按照书本P156~P157添加补充即可。

在web目录下——>找到c_foreach2.jsp。按照书本P157添加补充即可。

在web目录下——>找到c_url.jsp。按照书本P158~P159添加补充即可。

在web目录下——>找到if.jsp。按照书本P159~P160添加补充即可。

五、实训要求,所需的各个截图(请勿直接复制拿去提交!)

(1)访问浏览器地址:"http://localhost:8080/chapter06/MyServlet"

(2)访问浏览器地址:"http://localhost:8080/chapter06/pageContext.jsp"

(3)访问浏览器地址:"http://localhost:8080/chapter06/scopes.jsp"

(4)访问浏览器地址:"http://localhost:8080/chapter06/param.jsp"

(5)访问浏览器地址:"http://localhost:8080/chapter06/cookie.jsp"

(6)访问浏览器地址:"http://localhost:8080/chapter06/initParam.jsp"

(7)访问浏览器地址:"http://localhost:8080/chapter06/test.jsp"

(8)访问浏览器地址:"http://localhost:8080/chapter06/c_out1.jsp"。再一次输入地址,不过后面加上一个参数?username=itcast。

​编辑

(9)访问浏览器地址:"http://localhost:8080/chapter06/c_out2.jsp"。

(10)访问浏览器地址:"http://localhost:8080/chapter06/c_if.jsp"。

(11)访问浏览器地址:"http://localhost:8080/chapter06/c_choose.jsp"。

(12)访问浏览器地址:"http://localhost:8080/chapter06/c_foreach1.jsp"。

(13)访问浏览器地址:"http://localhost:8080/chapter06/c_foreach2.jsp"。

(14)访问浏览器地址:"http://localhost:8080/chapter06/c_url.jsp"。点击页面中两个其中一个超链接,跳转到c_out1.jsp页面。

(15)访问浏览器地址:"http://localhost:8080/chapter06/if.jsp"

(使用IDEA旗舰版(2024)完成)

一、IDEA中打开实训所需项目(chapter07)。

(1)学习通下载部分源代码(需修改)

(第七章——>拿到项目"chapter07")

(2)在IDEA中打开该项目(选择chapter07目录)

(3)点击信任项目(chapter07),即可打开

(4)整体的项目(chapter07)结构

二、初步了解本章需要学习的东西。(会的可跳过

  •  JSP开发中,为了获取Servlet域对象中的存储数据。会需要书写很多Java代码,这样使jsp页面混乱。为了降低jsp页面的复杂度,增强代码重用性,推出了标准的标签库JSTL。同时,为了获取servlet域对象中的存储数据,还提供了El(表达式语言),降低了开发的难度
  • El(表达式语言)是JSP引入的新内容,可以简化开发中的对象引用,规范页面代码,增加程序可读性和可维护性。
  • EL语法很简单——>以"${"开始,"$"结束
  • 想要在网页上显示字符串"${",要在其前面+"\"。
  • EL的标识符规则(不能以数字开头、不能是关键字、不能是EL隐式对象(pageContext)、不能包含引号等等特殊字符)
  • EL关键字认识、EL中的变量(${变量})、EL中的常量、EL中的算术符("+"号与Java区分)、EL比较运算符、逻辑运算符、EL的empty运算符、EL的条件运算符(${A?B:C})、EL的"()"运算符
  • EL隐式对象。有11个,类似于JSP的内置对象,可以直接通过对象名进行各种操作。如pageContext对象。详细自己看书了解。
  • EL提供了4个用于访问作用域的隐式对象。(pageScope、requestScope、sessionScope、applicationScope)这四个隐式对象只能获取指定范围内的属性值。
  • JSP页面中经常要获取客户端传递的请求参数。两个隐式对象(param、paramValues)两个。使用方法("."后面跟的是name属性值)【${param.num}】、【${paramValues.nums[0]} :数组】。
  • EL提供了获取客户端的Cookie信息的隐式对象——>该对象是一个集合了所有Cookie信息的Map集合,Map集合中元素的键为各个Cookie的名称,值对应的Cookie对象。
  • EL中initParam对象用于获取Web应用初始化参数的值。
  • JSTL。是开放源代码的JSP标签库。JSTL包含5类标签库——>核心标签库(taglib)(表达式标签、URL标签、流程控制标签)、格式标签库(JSP本地信息、设置JSP页面时区)、使用SQL标签库(包含用于访问和操作数据库的标签)、使用XML标签库(对XML文档的数据进行操作)、函数标签库(字符串操作,提取字串、字符串长度获取)
  • Core标签库。JSTL核心标签库中常用的两个表达式标签:<c:out>(向页面输出一段文本信息)、<c:remove>(移除指定的JSP范围内的对象)。只有当value的值为null时,<c:out>输出的值才会为默认值,否则是输出空字符串。
  • <c:out>标签中不设置escapeXml属性,则属性的默认值为true。即自动进行HTML编码转换。
  • 流程控制标签。<c:if>、<c:choose>、<c:when>、<c:otherwise>。具体看书了解P154~P155。其中嵌套语法——><c:choose>里包含一个或多个<c:when>,零个或一个<c:otherwise>,<c:when>标签都不成立时,才执行和输出<c:otherwise>标签体里的内容
  • 循环标签。专门迭代集合对象中的元素(Set、List、Map、数组等)。<e:forEach>标签
  • URL相关标签。Core标签库提供了相应的标签。其中标签<c:param>(获取URL的附加参数)、<c:redirect>(用于按特定的规则重新构造URL)、<c:url>(负责重定向)。

三、配置实训项目(chapter07)的所需环境。

  • 如Tomcat的安装和启动,请前往前边篇博客《实训二——chapter05项目》中查看。

JavaWeb程序设计《实训二(会话及会话技术)第五章》-CSDN博客文章浏览阅读772次,点赞29次,收藏10次。学校的JavaWeb程序设计实训二,用2024IDEA旗舰版完成所有操作...(配置Java环境、Tomcat安装与启动、完整代码..)https://blog.csdn.net/m0_74363339/article/details/142033414?spm=1001.2014.3001.5501

  • 本项目(chapter07)不需要手动导入(servlet-api.jar)这个jar包。该项目中可以通过目录或者项目结构的库,看到已经存在。如下图显示。

  • 本项目还需要自己导入对应的jsp-api.jar包。否则后面会出现问题!!具体如何操作,请看上篇文章。

JavaWeb程序设计《实训三(JSP技术)第六章》-CSDN博客文章浏览阅读408次,点赞18次,收藏18次。怀化学院软件学院的《JavaWeb程序设计》实训三(第6章),用2024IDEA旗舰版完成所有操作(详细操作演示、代码、运行截图..)https://blog.csdn.net/m0_74363339/article/details/142054950

四、回到IDEA之前打开的项目,修改和补充各个目录下对应的代码。

  • 在src目录下,找到cn.itcast.servlet目录下——>找到MyServlet.java。按照书本P140添加补充即可。

package cn.itcast.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "MyServlet",urlPatterns="/MyServlet")
public class MyServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,
        HttpServletResponse  response) throws ServletException, IOException {
        request.setAttribute("username","itcast");
        request.setAttribute("password","123");
        RequestDispatcher dispatcher = request.getRequestDispatcher("/myjsp.jsp");
        dispatcher.forward(request,response);

    }
    public void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
  • 在web目录下——>找到myjsp.jsp。按照书本P140(文件7-3)添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<html>
<head></head>
<body>
用户名:<%=request.getAttribute("username")%><br/>
密 码:<%=request.getAttribute("password")%><br/>
<hr/>
使用EL:<br/>
用户名:${username}<br />
密码:${password}<br />
</body>
</html>
  • 在web目录下——>找到pageContext.jsp。按照书本P145~P146添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<html>
<head></head>
<body>
     请求URI为:${pageContext.request.requestURI} <br />
     Content-Type响应头为:${pageContext.response.contentType} <br />
     服务器信息为:${pageContext.servletContext.serverInfo} <br />
     Servlet注册名为:${pageContext.servletConfig.servletName} <br />
</body>
</html>
  • 在web目录下——>找到scopes.jsp。按照书本P146添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<html>
<head></head>
<body>
<% pageContext.setAttribute("userName","itcast"); %>
<% request.setAttribute("bookName", "Java Web"); %>
<% session.setAttribute("userName", "atheism"); %>
<% application.setAttribute("bookName", "Java 基础"); %>
表达式\${pageScope.userName}的值为:${pageScope.userName} <br />
表达式\${requestScope.bookName}的值为:${requestScope.bookName} <br />
表达式\${sessionScope.userName}的值为:${sessionScope.userName} <br />
表达式\${applicationScope.bookName}的值为:${applicationScope.bookName}
<br />
表达式\${userName}的值为:${userName}
</body>
</html>
  • 在web目录下——>找到param.jsp。按照书本P147添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<html>
<head></head>
<body style="text-align: center;">
<form action="${pageContext.request.contextPath}/param.jsp">
    num1:<input type="text" name="num1"><br />
    num2:<input type="text" name="num"><br />
    num3:<input type="text" name="num"><br />
    <input type="submit" value="提交" />&nbsp;&nbsp;
    <input type="submit" value="重置" /><hr />
    num1:${param.num1}<br />
    num2:${paramValues.num[0]}<br />
    num3:${paramValues.num[1]}<br />
</form>
</body>
</html>
  • 在web目录下——>找到cookie.jsp。按照书本P148添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<html>
<head></head>
<body>
Cookie对象的信息:<br />
${cookie.userName}<br />
Cookie对象的名称和值:<br />
${cookie.userName.name}=${cookie.userName.value}
<% response.addCookie(new Cookie("userName","itcast")); %>
</body>
</html>
  • 在web目录下——>找到initParam.jsp。按照书本P148添加补充即可。web.xml文件不需要修改,项目中已经提供。

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<html>
<head></head>
<body>
author的值为:${initParam.author}
</body>
</html>
  • 在web目录下——>找到test.jsp。按照书本P151添加补充即可。如下载和导入JSTL的jar包、配置项目中已经完成。

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
<body>
<c:out value="Hello World!"></c:out>
</body>
</html>
  • 在web目录下——>找到c_out1.jsp。按照书本P152添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
<body>
<%--第1个out标签 --%>
userName属性的值为:
<c:out value="${param.username}" default="unknown" /><br />
<%--第2个out标签 --%>
userName属性的值为:
<c:out value="${param.username}">
    unknown
</c:out>
</body>
</html>
  • 在web目录下——>找到c_out2.jsp。按照书本P152~P153添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
<body>
<c:out value="${param.username}" escapeXml="false">
    <meta http-equiv="refresh"
         content="0;url=http://www.itcast.cn" />
</c:out>
</body>
</html>
  • 在web目录下——>找到c_if.jsp。按照书本P154添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"
         import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
<body>
<c:set value="1" var="visitCount" property="visitCount" />
    <c:if test="${visitCount==1}">
        This is your first visit. Welcome to the site!
    </c:if>>
</body>
</html>
  • 在web目录下——>找到c_choose.jsp。按照书本P155添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"
         import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
<body>
<c:choose>
    <c:when test="${empty param.username}">
        unKnown user.
    </c:when>
    <c:when test="${param.username=='itcast'}">
        ${param.username} is manager
    </c:when>
    <c:otherwise>
        ${param.username} is employee
    </c:otherwise>
</c:choose>

</body>
</html>
  • 在web目录下——>找到c_foreach1.jsp。按照书本P156~P157添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"
         import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
<body>
<%
    String[] fruits = { "apple", "orange", "grape", "banana" };
%>
String数组中的元素:
<br />
<c:forEach var="name" items="<%=fruits%>">
    ${name}<br />
</c:forEach>
<%
    Map userMap = new HashMap();
    userMap.put("Tom", "123");
    userMap.put("Lina", "123");
    userMap.put("Make", "123");
%>
<hr />
HashMap集合中的元素:
<br />
<c:forEach var="entry" items="<%=userMap%>">
    ${entry.key}&nbsp;${entry.value}<br />
</c:forEach>
</body>
</html>
  • 在web目录下——>找到c_foreach2.jsp。按照书本P157添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"
         import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
<body>
colorsList集合(指定迭代范围和步长)<br />
<%
    List colorsList=new ArrayList();
    colorsList.add("red");
    colorsList.add("yellow");
    colorsList.add("blue");
    colorsList.add("green");
    colorsList.add("black");
%>
<c:forEach var="color" items="<%=colorsList%>" begin="1"
end="3" step="2">
    ${color}&nbsp;
</c:forEach>

</body>
</html>
  • 在web目录下——>找到c_url.jsp。按照书本P158~P159添加补充即可。
<%@ page language="java" contentType="text/html; charset=utf-8"
         import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head></head>
使用绝对路径构造URL:<br />
<c:url var="myURL" value="http://localhost:8080/chapter07/c_out1.jsp">
    <c:param name="username" value="张三"/>
</c:url>
<a href="${myURL}">c_out1.jsp</a><br />
使用相对路径构造URL:<br />
<c:url var="myURL"
       value="c_out1.jsp?username=Tom" />
<a href="${myURL}">c_out1.jsp</a>
</body>
</html>
  • 在web目录下——>找到if.jsp。按照书本P159~P160添加补充即可。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<fieldset>
    <c:if test="${param.action=='mon'}">
        周一了:工作的第一天,加油!
    </c:if>
    <c:if test="${param.action=='tues'}">
        周二了:工作的第二天,加油!
    </c:if>
    <c:if test="${param.action=='wed'}">
        周三了:工作的第三天,加油!
    </c:if>
    <c:if test="${param.action=='thu'}">
        周四了:工作的第四天,加油!
    </c:if>
    <c:if test="${param.action=='fri'}">
        周五了:工作的第五天,加油!
    </c:if>
    <c:if test="${param.action=='sat'}">
        周六了:休息的第一天!
    </c:if>
    <c:if test="${param.action=='sun'}">
        周日了:休息的第二天!
    </c:if>
</fieldset>
</body>
</html>

五、实训要求,所需的各个截图(请勿直接复制拿去提交!)

(1)访问浏览器地址:"http://localhost:8080/chapter07/MyServlet"

(2)访问浏览器地址:"http://localhost:8080/chapter07/pageContext.jsp"

(3)访问浏览器地址:"http://localhost:8080/chapter07/scopes.jsp"

(4)访问浏览器地址:"http://localhost:8080/chapter07/param.jsp"

(5)访问浏览器地址:"http://localhost:8080/chapter07/cookie.jsp"

(6)访问浏览器地址:"http://localhost:8080/chapter07/initParam.jsp"

(7)访问浏览器地址:"http://localhost:8080/chapter07/test.jsp"

(8)访问浏览器地址:"http://localhost:8080/chapter07/c_out1.jsp"。再一次输入地址,不过后面加上一个参数?username=itcast。

(9)访问浏览器地址:"http://localhost:8080/chapter07/c_out2.jsp"。

(10)访问浏览器地址:"http://localhost:8080/chapter07/c_if.jsp"。

(11)访问浏览器地址:"http://localhost:8080/chapter07/c_choose.jsp"。

(12)访问浏览器地址:"http://localhost:8080/chapter07/c_foreach1.jsp"。

(13)访问浏览器地址:"http://localhost:8080/chapter07/c_foreach2.jsp"。

(14)访问浏览器地址:"http://localhost:8080/chapter07/c_url.jsp"。点击页面中两个其中一个超链接,跳转到c_out1.jsp页面。

(15)访问浏览器地址:"http://localhost:8080/chapter07/if.jsp"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁岁岁平安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值