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

来源:互联网 发布:visio 2013 for mac 编辑:程序博客网 时间:2024/06/07 12:43

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 0
原创粉丝点击