网页左边,向下滑有目录索引,可以根据标题跳转到你想看的内容 |
---|
一、JSP
jsp就是一个Servlet,它为了简化代码书写,让我们可以像写html一样编写jsp文件,最终它会将jsp页面转换为java代码
jsp脚本 |
---|
<% 代码 %>:在这里的代码,最终会转到service方法中,也就是service中可以写什么,这里就可以写什么 |
<%! 代码 %>:在这里的代码,是用来定义成员的,最终会直接转到Servlet中,比如定义成员变量,成员方法 |
<%= 代码 %>:这里的代码,是用来输出的,最终会直接转到Servlet中,用来动态输出数据 |
jsp内置对象 |
---|
因为jsp是一个Servlet,所以我们在类中定义的方法对象,可以在jsp中直接使用,比如其中定义了一个out对象,此对象封装着response的输出对象,这就是一个内置对象,可以直接在jsp中使用,一共9个,这里简单介绍3个 |
response:就是Servlet的响应体对象 |
request:Servlet的请求体对象 |
out:将数据输出到页面上,字符输出流对象,和response.getWriter()类似,out写在哪里,就会在哪里输出,但是因为response响应优先级高,所以response的响应都会优先,会打乱我们页面元素顺序,所以使用out来输出数据到页面 |
1、JSP指令
用于配置JSP页面,导入资源文件
格式 |
---|
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
3个指令 |
---|
page:配置jsp页面 |
include:页面包含,导入页面资源的文件,用来导入其它页面 |
taglib:导入资源,比如JSTL标签库 |
首先我们需要引入JSTL的依赖,因为taglib指令的讲解需要引入JSTL为例子讲解
<dependencies>
<!--dependency>
<groupId>com.yzpnb</groupId>
<artifactId>[the artifact id of the block to be mounted]</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<!--
- page指令,用于配置页面
- contentType :等同于response.setContentType(),用来配置Servlet的响应编码格式,idea等开发工具会参考此配置,设置页面编码格式
- pageEncoding:用来配置页面编码格式,使用记事本等编辑工具,必须指定此配置,才能设置页面编码
- language :用来指定用那种编程语言,但是其实JSP到现在为止也只有java在用
- buffer :缓冲区大小,默认8kb
- import :用来导包,因为我们在jsp页面写java代码,有时需要导包,这时就使用此属性完成导包
- errorPage : 指定错误页面,当前页面发生错误,自动跳转到指定错误页面
- isErrorPage : 标识当前页面是否是错误页面,如果为true,代表当前页面是错误页面,可以使用内置对象exception,默认为flase
一般page指令会有很多个,因为导包时,我们会一个包占一行,而不是所有导包配置都写在一行上。
-->
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" buffer="16kb" import="java.util.*" isErrorPage="true" errorPage="index.jsp" %>
<%--<%@ include file="index.jsp" %>
此指令用来包含一个页面,比如你有10个页面,每个页面的头部,都是一个logo+菜单,那么就可以把logo+菜单单独写成一个页面
然后通过此指令包含过来,这样10个页面就不用每个页面写相同的代码了
--%>
<!--
- 我们这里用JSTL举例子,但是需要JSTL的jar包
prefix:是前缀,表示我们可以通过属性值来使用引入的资源,比如我这里属性值是c,那么可以通过c标签引用JSTL的功能
uri:资源路径,这里导入了jstl的包,
-->
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!--这个就是JSTL标签的用法,通过前缀即可使用JSTL标签中的内容-->
<c:catch>
</c:catch>
<form action="/dome1" method="post">
<input type="text" name="username" placeholder="请输入用户名"/><br/>
<input type="text" name="password" placeholder="请输入密码"/><br/>
<input type="checkbox" name="hobby" value="game"/>游戏
<input type="checkbox" name="hobby" value="basketball"/>篮球<br/>
<input type="submit" value="提交"/>
</form>
<%!
int j = 0;
%>
<%
for (int i = 0 ; i <= 10;i++){
j = j+i;
System.out.println(j);
}
%>
<h1>经过计算最终j的结果是:<%= j %></h1>
</body>
</html>
2、JSP注释
<!--html注释,只能注释HTML代码片段-->
<%-- jsp注释,可以注释所有 --%>
3、内置对象
二、EL
Expression Language 表达式语言 简称EL |
---|
替换和简化JSP页面中java代码的编写 |
语法:$ {表达式},如果想要在页面中展示${}这样的字符串,而不进行表达式运算,只需在前面加上,就是\ ${3>4} |
三、JSTL
1、if标签
2、choose标签
3、foreach标签
4、案例