首页 > 编程语言 >熟悉又陌生的JavaWeb 第4天

熟悉又陌生的JavaWeb 第4天

时间:2024-03-11 18:13:33浏览次数:27  
标签:name 标签 tagNewObj JSTL 熟悉 简介 陌生 JavaBean JavaWeb

传送门

JSP和JavaBean

认识JavaBean

在JSP中使用JavaBean

为了好看,jsp里只有xml标签,也就是后来的jspx后缀文件的基础
很不易读,不建议这么写

<jsp:useBean id="tagNewObj" class="com.lazyking.Student" />
<jsp:setProperty name="tagNewObj" property="id" param="no" />
<jsp:setProperty name="tagNewObj" property="name" value="tag小明" />
//相同作用
    Student tagNewObj = new Student();
    tagNewObj.setId(Integer.parseInt(request.getParameter("no")));
    tagNewObj.setName("tag小明");

JavaBean的范围

page request session application
没什么特殊的,与xx.setAttribute是同样的作用

DAO和VO

课后习题

EL和JSTL

关系:EL -> JSTL,JSTL是强化版本
表达式解析相关的源代码可以看el包下的内容

EL与JSTL解析

一定要添加到作用域才可以使用表达式,否则取不到想要的数据
取值的逻辑源码里写了 ImplicitObjectELResolver

 ImplicitObjectELResolver_getValue

认识表达式语言

基本运算符

有一些等效的写法

  • div \
  • mod %
  • eq ==
  • ne !=
  • lt <
  • gt >
  • le <=
  • ge >=
  • and &&
  • or ||
  • not !

数据访问

<%
    request.setAttribute("requestSetStudent",new Student(1,"requestStudent"));
    pageContext.setAttribute("pageSetStudent",new Student(2,"pageStudent"));
    session.setAttribute("sessionSetStudent",new Student(3,"sessionStudent"));
    application.setAttribute("applicationSetStudent",new Student(4,"applicationStudent"));
%>
<ul>
    <li>${requestScope.requestSetStudent.name}</li>
    <%-- 不加前缀也能用 会按顺序找--%>
    <li>${requestSetStudent.name}</li>
    <li>${pageScope.pageSetStudent.name}</li>
    <li>${sessionScope.sessionSetStudent.name}</li>
    <li>${applicationScope.applicationSetStudent.name}</li>
    <%-- [] . 等效写法 []支持特殊字符串和变量(少见) --%>
    <li>${applicationScope.applicationSetStudent["name"]}</li>
    <%-- 获取RequestParam --%>
    <li>${param.no}</li>
</ul>

认识JSTL

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

源代码
JSTL源代码

核心标签库

XML标签库简介

国际化标签库简介

数据库标签库简介

函数标签库简介

自定义标签

自己加的章节,我觉得很重要很实用

旧方式

继承jakarta.servlet.jsp.tagext.TagSupport
自定义标签

public class CustomTld extends TagSupport {

    @Override
    public int doStartTag() throws JspException {
        try {
            pageContext.getOut().print("Hello, Custom Tag!");
        } catch (IOException e) {
            throw new JspException("Error in MyCustomTag", e);
        }
        // 表示不处理标签体内容
        return Tag.SKIP_BODY; 
    }

}

在WEB-INF里新建.tld后缀文件并配置

<?xml version="1.0" encoding="UTF-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>customTld</short-name>
    <uri>http://mycompany.com/customTld</uri>

    <!-- Invoke 'Generate' action to add tags or functions -->
    <tag>
        <name>greet</name>
        <tag-class>com.lazyking.CustomTld</tag-class>
        <body-content>empty</body-content>
    </tag>
</taglib>


使用tld

<%@ taglib prefix="my" uri="http://mycompany.com/customTld"  %>
<my:greet/>

新方式

直接在WEB-INF里新建一个tag后缀的文件

<%--定义HelloWorld.tag--%>
<%@ tag description="Simple Hello Tag" pageEncoding="UTF-8" %>
Hello, World!

<%--使用--%>
<%@ taglib prefix="mytags" tagdir="/WEB-INF/tags" %>
<mytags:HelloWorld />

自定义标签解析后的源码
自定义标签解析后的源码

课后习题

标签:name,标签,tagNewObj,JSTL,熟悉,简介,陌生,JavaBean,JavaWeb
From: https://www.cnblogs.com/lazykingloveu/p/18066702

相关文章

  • hive分区和分桶你熟悉吗?
    两种用于优化查询性能的数据组织策略,数仓设计的关键概念,可提升Hive在读取大量数据时的性能。1分区(Partitioning)根据表的某列的值来组织数据。每个分区对应一个特定值,并映射到HDFS的不同目录。常用于经常查询的列,如日期、区域等。这样可以在查询时仅扫描相关的分区,而不是整个数......
  • 熟悉又陌生的JavaWeb 第3天
    传送门Servlet编程第2天的开头部分已经看过Servlet这里再介绍一下注解方式,可以不用配置web.xml使用注解的前提是web.xml的version是4.0(3.0以上应该就行)@WebServlet(name="MyNewServlet",value="/MyNewServlet")publicclassMyNewServletextendsHttpServlet{......
  • JavaWeb之Java Servlet学习笔记
    JavaWeb学习笔记,主要是讲JavaServle,很适合Java开发网站的入门学习。(以课程进度为目录)第四周Web课.jsp中删除共性代码(html、body)————.java文件能相对的简洁taglib指令(标签库)动作元素action——element:包含include动态包含:在运行时才引入文件,代码也会动态引入,时间和......
  • 熟悉又陌生的JavaWeb 第2天
    传送门JSP基本语法什么是servlet自定义Servlet,直接使用抽象好的HttpServlet更好MyCustomServletpublicclassMyCustomServletextendsHttpServlet{@SerialprivatestaticfinallongserialVersionUID=-599450886992695746L;@Overrideprotected......
  • 关于Maven创建javaweb项目在配置Tomcat的问题(1)
    先将Maven项目转换成Java项目,确保没有架包没有报错和编译错误的情况下进行如下操作:打开Maven项目中的pom.xml文件,找到标签。查看里面是否配置元素,有则直接添加如下配置。org.codehaus.cargocargo-maven2-plugin1.7.6tomcat9xembedded如果没有,则先添加元素,然后再添加......
  • javaweb04-maven&web入门
    maven依赖管理:管理项目依赖的jar包,避免版本冲突统一项目结构:提供标准统一的项目结构标准的项目构建:标准跨平台的自动化项目构建方式maven坐标groupid:定义当前项目隶属组织名称artifactid:定义当前项目名称version:定义当前项目版本号依赖依赖传递排除依赖<exclusion>......
  • javaweb03-前端工程
    Ajax异步的Javascript和XML数据交换异步交互:在不重载页面的情况下,与服务器交换数据并更新部分网页Axios入门前后端分离开发需求分析->接口定义->前后端并行开发->测试->前后端联调开发YAPI接口管理平台前端工程化规范化、标准化前端开发环境准备vue-cli脚手架Vu......
  • 3.1日javaweb
     今天继续进行项目的编写packagecom.example.service;importcom.example.mapper.UserMapper;importcom.example.pojo.Application;importcom.example.pojo.Plan;importcom.example.pojo.User;importorg.springframework.beans.factory.annotation.Autowired;impo......
  • JavaWeb
    JavaWebJavaWeb组件首先献上Tomcat架构神图:ServletServlet容器:运行在Web服务器上的程序,作为来自HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层,它负责处理用户的请求,并根据请求生成相应的返回信息提供给用户。​ 大体原理图如下:Servlet请求的处理......
  • 黑马程序员JavaWeb学习笔记-过滤器
    过滤器--Filter过滤器Filter快速入门Filter拦截路径过滤器链Filter——流程importcom.alibaba.fastjson.JSONObject;importcom.itheima.pojo.Result;importlombok.extern.slf4j.Slf4j;importorg.springframework.util.StringUtils;importjavax.servlet.*;im......