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

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)把数据显示到浏览器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值