06-JSP
2022/8/3 23:24:01
本文主要是介绍06-JSP,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JSP
1、JSP简介
1.1、概念
- Java Server Pages,Java服务端页面
- 一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容
- JSP = HTML + Java
1.2、作用
- 简化开发,避免了Servlet中直接输出HTML标签
2、JSP导入
2.1、导入JSP坐标
-
<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency>
2.2、创建JSP文件
- IDEA ---> New ----> JSP....
2.3、编写HTML标签和Java代码
-
<body> <h1> 我是JSP </h1> <% System.out.println("我是Java代码"); %> </body>
-
PS
- 这里的Java代码输出语句有可能会因为JDK版本太高导致JSP报错说无法编译此类
- 解决办法是换JDK成低版本的(如1.8)
3、JSP原理
- JSP本质上就是一个Servlet
- JSP在被访问的时候,由JSP容器(Tomcat)将其转换为Java文件(Servlet),再由JSP容器(Tomcat)将其编译,最终对外提供服务,该服务的提供者其实就是这个字节码文件
- 查看JSP生成的java源码
4、JSP脚本
- JSP脚本用于在JSP页面内定义Java代码
- JSP脚本分类
- 1. <%...%>
- 内容会直接放到
_jspService()
方法中
- 内容会直接放到
- 2.<%=...%>
- 内容会放到
out.print()
中,作为out.print()
的参数
- 内容会放到
- 3.<%!...%
- 内容会放到
_jspService()
方法之外,被类直接包含
- 内容会放到
- 1. <%...%>
- 源码示例
5、JSP缺点
- 由于JSP页面内,既可以定义HTML标签,又可以定义Java代码,造成了以下问题:
- 书写麻烦,特别是复杂的页面
- 阅读麻烦
- 复杂度高,运行需要依赖于各种环境,JRE,JSP容器,JavaEE.....
- 占内存和磁盘,JSP会自动生成.java和.class文件占用磁盘,运行的是.class文件占用内存
- 调试困难,出错后,需要找到自动生成的.java文件进行调试
- 不利于团队协作,前端人员不会Java,后端人员不精HTML
- ....
- JSP现在在企业中已经被淘汰
- 发展历程
6、EL表达式
6.1、EL的概念
- Expression Language:表达式语言,用于简化JSP页面内的Java代码
6.2、主要功能
- 获取数据
6.3、语法
${expression}
${brands}
:获取域中存储的key为brands的数据
6.4、JavaWeb中的四大域对象
- page
- 当前页面有效
- request
- 当前请求有效
- session
- 当前会话有效
- application
- 当前应用有效
6.5、EL表达式获取数据的顺序
- 会依次从这4个域中寻找,直到找到为止
6.6、示例
-
Servlet
-
@WebServlet("/demo02") public class ServletDemo02 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1.准备数据 List<Brand> brands = new ArrayList<>(); brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0)); brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1)); brands.add(new Brand(5,"华为","华为科技有限公司",1000,"为发烧而生",1)); brands.add(new Brand(6,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1)); // 2.存储数据到request域中 request.setAttribute("brands", brands); request.setAttribute("username", "zhangsan2"); request.setAttribute("age", 162); // 3.转发到jsp request.getRequestDispatcher("04el.jsp").forward(request, response);
-
-
JSP
-
<body> username: ${username}<br/> brands: ${brands} </body>
-
7、JSTL标签
7.1、概念
-
JSP标准标签库(Jsp Standarded Library),使用标签取代JSP页面上的Java代码
-
eg
-
<c:if test="${flag == 1}"> 男 </c:if> <c:if test="${flag == 2}"> 女 </c:if>
-
7.2、标签类型
7.3、JSTL的使用
-
1.导入坐标
-
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
-
-
2.在JSP页面上引入JSTL标签库
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
-
3.使用
-
<c:if test="...">...</c:if>
,test用于定义条件表达式-
<c:if test="${flag == 1}"> 男 </c:if> <c:if test="${flag == 2}"> 女 </c:if>
-
-
<c:forEach>
:相当于for循环(跟Java中的for循环类似,有增强for循环和普通for循环)-
增强for循环
-
items
:被遍历的容器 -
var
:遍历产生的临时变量 -
varStatus
:遍历状态对象 -
<c:forEach items="${brands}" var="brand"> <tr align="center"> <td>${brand.id}</td> <td>${brand.brandName}</td> <td>${brand.companyName}</td> <td>${brand.description}</td> </tr> </c:forEach> <%--相当于Java代码中的增强for循环 for (Brand brand : brands) { Integer id = brand.getId(); String imgUrl = brand.getImgUrl(); String brandName = brand.getBrandName(); String companyName = brand.getCompanyName(); } --%>
-
-
普通for循环
-
begin
:开始数 -
end
:结束数 -
step
:步长 -
<c:forEach var="i" begin="0" end="10" step="1"> ${i} </c:forEach> <%--相当于Java代码中的普通for循环 for (int i = 0; i <= 10; i++) { System.out.println(i); } --%>
-
-
-
8、MVC模式和三层架构
8.1、MVC模式
- MVC是一种分层开发的模式
- M:Model,业务模型,处理业务
- V:View,视图,界面展示
- C:Controller,控制器,处理请求,调用模型和视图
- MVC的好处
- 职责单一,互不影响
- 有利于分工协作
- 有利于组件重用
8.2、三层架构
- 表现层,业务逻辑层,数据访问层
- 表现层
- 接收请求,封装数据,调用业务逻辑层,响应数据
- 业务逻辑层
- 对业务逻辑进行封装,组合数据访问层中的基本功能,形成复杂的业务逻辑功能
- 数据访问层
- 对数据库的CRUD基本操作
- 表现层
8.3、MVC模式和三层架构之间的关系
9、基于JSP的品牌信息管理案例
- 完成品牌数据的增删改查操作
- 项目结构
- 查询所有
- 添加品牌信息
- 修改品牌信息
- 回显数据
- 修改数据
- 回显数据
- 删除品牌信息
- 前端发送具体要删除的id的请求,web层接收id,调用service中的delete方法,然后delete方法请求Dao层的Mapper接口,执行删除SQL语句,最后完成删除
- 项目结构
这篇关于06-JSP的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程