深入JSP之JSP标签以及开发模式

    xiaoxiao2021-03-25  97

    1、JSP标签:用来替换jsp脚本 内置标签 jstl标签 自定义标签

    内置标签(以jsp开头的) 1、JSP:forward(用来做页面转发的)

    <jsp:forward page="指定路径"> <jsp:param value="" name ="" ></jsp:param> </jsp:forward>

    在转发的页面可以通过EL表达式获取请求参数${param.name}

    2、JSP:include(用来包含文件的)

    <jsp:include page="指定路径"></jsp:include>

    JSP:include和<%@include%>的区别:

    1.@include指令会将被包含的页面中的内容拷贝到当前页面中,然后合并翻译成一盒.java源文件 Jsp:include各自翻译各自的jsp(被包含页面和包含页面都会生成属于自己的java源文件),运行的时候再把这两个文件合并到一起 2.写法不一样指令中跟的page属性,@include跟的file 3.传递参数不同,jsp:include可以向被包含页面传递参数,@include不可以

    3、JSP:useBean

    <!-- 内部会帮我们创建一个User对象,并且这个User可以通过id来访问 --> <jsp:useBean id="stu" class="com.chinasoft.entite.User" /> <!-- 设置stu的name一个gender属性的值 --> <jsp:setProperty property="name" name="stu" value="xiaoming"/> <jsp:setProperty property="gender" name="stu" value="male"/> <!-- 获取stu的name和gender属性的值 --> <jsp:getProperty property="name" name="stu"/> <jsp:getProperty property="gender" name="stu"/>

    注:User类一定要符合JavaBean规划,一定要有一个无参的构造方法

    JSTL标签: 包含:核心标签、JSTL函数 1、核心标签:(C标签) JSTL标签:—核心标签(c标签) (掌握) 使用核心标签的步骤:

    1.需要导入jar包 jstl-1.2.jar standard.jar 2.需要在要使用jstl的页面中添加 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3.可以使用核心标签库了

    1.1核心标签:c:set c:remove c:out

    //向request域中存储一条数据 key是name 值是xiaoming <c:set var="name" value="xiaoming" scope="request"></c:set> //移除域对象中name的数据 <c:remove var="name"/> // 向浏览器输出内容 default属性的含义是在value值为null的情况下默认输出的内容 <c:out value="${name}" default="xx"></c:out>

    1.2核心标签:条件判断 c:if c:when c:choose c:otherwise

    <c:if test = "${score>60}"> 及格</c:if> <c:choose> <c:when test="${score>90}">优秀</c:when> <c:when test="${score>90}">优秀</c:when> <c:when test="${score>70}">良好</c:when> <c:when test="${score>60}">及格</c:when> <c:otherwise >不及格</c:otherwise> </c:choose>

    注:c:choose一般需要和c:when结合起来使用,单独用没有意义

    1.3核心标签:c:forEach

    <% List<User> list = new ArrayList(); list.add(new User("小明","男")); list.add(new User("小红","男")); list.add(new User("小白","男")); pageContext.setAttribute("list", list); %> <c:forEach var="u" varStatus="uidx" items="${list }"> ${uidx.count }--> ${u.name } ---> ${u.gender } </c:forEach>

    c:forEach标签中的几个参数:

    var:表示遍历的集合中的每一个对象

    varStatus:表示遍历到的对象的状态信息

    1.4核心标签 重定向 (了解) 基本用法:

    <c:redirect url="地址"></c:redirect>

    注意点:如果我们使用c:redirect方法来做这个重定向的时候,只能够访问站点内的资源,不能再访问外部资源了。

    2、JSTL函数(在EL表达式中使用的 (掌握))

    ${fn:contains("abc","a")}; ${fn:endsWith("abc","c")}; ${fn:indexOf("abc","b")}; ${fn:length("abc") }; ${fn:replace("abc","b","wwwww") } ${fn:split("a-b-c","-") } <!-- 遍历输出数组 --> <c:forEach var="str" items="${fn:split('a-b-c','-') }"> ${str} </c:forEach> ${fn:substring("中国人",1,3) } ${fn:toUpperCase("abc") } <!-- 拼接字符串的方法 --> <% String[] arr = new String[]{"1","2","3"}; pageContext.setAttribute("arr", arr); %> ${fn:join(arr,"-") }

    自定义标签 自定义标签的步骤:

    1.写一个类继承于SimpleTagSupport覆盖里面的doTag方法 2.在web-inf下面写一个.tld文件,里面去声明相关的标签 3.需要把自定义的标签的头引入当前的jsp文件 <%@taglib uri="" prefix=""%>

    自定义标签的执行流程:

    1.当我们通过浏览器输入网址localhost:8080/3.8Pro/tag04.jsp页面的时候,tomcat服务器会把jsp翻译成java源文件,再变成class字节码 2.tomcat服务器扫描到的时候,会去检查uri对应的tld文件是否存在,如果存在,则继续执行,如果不存在,则报错 3.tomcat服务器扫描到body中指定的标签后,会去uri对应的tld文件中查找是否存在该标签,如果存在,则继续执行,如果不存在,则报错 4.tomcat服务器根据标签名,在tld文件中找到该标签对应的实体类,然后创建该类的对象,执行doTag方法

    带属性的标签的开发步骤: 1.需要在tld文件中的tag下面写上

    <attribute> <name>id</name> <required>false</required> </attribute>

    2.需要在继承与SimpleTagSupport的类中声明属性名称对应的成员变量,并且实现getter和setter方法 3.在使用的jsp页面中写标签(会自动帮我们带上required字段的属性)

    关于标签体内容: scriptless: 标签体可以是html或者el表达式,不可以是jsp的java代码 empty: 必须是空标签。

    2、关于开发模式 (掌握) jsp 就是servlet 不仅可以写页面,还可以写java代码 servlet 只能够写java代码 Servlet技术: 开发动态资源。是一个java类,最擅长写java代码 jsp技术: 开发动态资源。最擅长输出html代码。

    servlet: 1)接收参数 2)处理业务逻辑 3)把结果保存到域对象中 4)跳转到jsp页面 Jsp: 1)从域对象取出数据 2)把数据显示到浏览器

    转载请注明原文地址: https://ju.6miu.com/read-17227.html

    最新回复(0)