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