【JSP快速入门】
【JSP简介】
避免了为了在html上输出从数据库查询出的信息使用write一句句敲。
【开发流程】
1. 导入JSP坐标 和 其他依赖。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- 引入service的依赖 -->
<dependency>
<groupId>org.example</groupId>
<artifactId>maven_service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- 引入servlet的依赖 -->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!-- 导入mysql 驱动jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!--jsp-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Tomcat插件 写在build标签中-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- 此处为项目的上下文路径 -->
<path>/jsp-demo</path>
<!--此处配置了访问的端口号 -->
<port>8081</port>
<!--字符集编码 -->
<uriEncoding>UTF-8</uriEncoding>
<!--服务器名称 -->
<server>tomcat7</server>
</configuration>
</plugin>
</plugins>
</build>
2. 创建JSP文件
3. 编写HTML标签和Java代码
【JSP原理】
hello.jsp其实就是个servlet文件,tomcat自动帮你写了HTML标签。
【JSP脚本】
<%!...%>写的也就是成员方法、成员变量
下面的EL表达式和JSTL标签都是为了使不在JSP里直接写java代码。
【EL表达式】
创建jsp文件和servlet文件,位置:
ServletDemo1代码:
//1. 准备数据
List<Brand> brands = new ArrayList<>();
brands.add(new Brand(1,"也一样",1));
brands.add(new Brand(2,"uuu",1));
brands.add(new Brand(3,"iii",0));
//2. 存储到request中去
request.setAttribute("brands",brands);
//3. 转发到 el-demo.jsp
request.getRequestDispatcher("/el-demo.jsp").forward(request,response);
需要在jsp文件开头加上<%@page isELIgnored="false" %>,不然会自动忽略EL表达式。
在jsp文件的body里写${brands}即可输出brands的值
request : 一次请求转发的多个页面之间共享
【JSTL标签】
JSP标准标签库(Jsp Standarded Tag Library),使用标签取代JSP页面上的Java代码
【快速入门】
1. 导入坐标
<!--jstl-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--standard-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
2. 在JSP页面上引入JSTL标签库
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3. 使用
【标签介绍】
【c:if】
servlet:
request.setAttribute("status",1);
//3. 转发到 el-demo.jsp
request.getRequestDispatcher("/jstl-if.jsp").forward(request,response);
jsp文件:注意也需要在jsp文件开头加上<%@page isELIgnored="false" %>
<c:if test="${status == 1}">
<h1>启用</h1>
</c:if>
<c:if test="${status == 0}">
<h1>禁用</h1>
</c:if>
【c:forEach】
【第一种使用方法】
servlet:
request.getRequestDispatcher("/jstl-foreach.jsp").forward(request,response);
jsp文件:注意也需要在jsp文件开头加上<%@page isELIgnored="false" %>
<table>
<td>id</td>
<td>brand_name</td>
<td>status</td>
<c:forEach items="${brands}" var="brand">
<tr align="center">
<td>${brand.id}</td>
<td>${brand.brand_name}</td>
<td>${brand.status}</td>
</tr>
</c:forEach>
</table>
细节:
1. brand.id的id是属性名称不是成员变量的名称,idea会把id首个字母大写变成Id,再加上get,形成方法getId()来获取id信息
2. 因为如果id是主键,唯一对应一个值,如果他被删除了,就不连续了,此时可以设置遍历状态对象,有index和count个选则:
index:从0开始
<c:forEach items="${brands}" var="brand" varStatus="status">
<tr align="center">
<td>${status.index}</td>
<td>${brand.id}</td>
<td>${brand.brand_name}</td>
<td>${brand.status}</td>
</tr>
count:从1开始
<c:forEach items="${brands}" var="brand" varStatus="status">
<tr align="center">
<td>${status.index}</td>
<td>${brand.id}</td>
<td>${brand.brand_name}</td>
<td>${brand.status}</td>
</tr>
【第二种使用方法】
可以用来添加页码跳转:
<c:forEach begin="1" end="10" step="1" var="i">
<a href="#">${i}</a>
</c:forEach>
【MVC模式和三层架构】