JSP定义:
在如下一个jsp文件里面有如下的代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>hello</h1>
<% System.out.println("hello,jsp"); %>
</body>
</html>
运行后前端页面输出如下
控制台输出如下
jsp的应用场景:
在上面这个页面里面,zhangsan位置处的数据是要动态显示的。
使用Servlet实现
如果是只用servlet实现需要写在后端代码 并传回前端进行展示
另外 还需要写一整个静态的html页面加上动态资源并返回
使用jsp实现
在jsp文件里写java代码来实现需要完成参数获取以及数据库连接并调用mybatis查询数据,并且会将html语句也写在同一个页面。
入门案例
首先要先创建一个javaweb项目并配置 好tomcat服务器,然后才创建jsp文件
jsp原理
生成的java文件
就是在里面完成了servlet的工作,把html语句都进行返回,原本在servlet里面要自己实现,在这里就自动实现。
JSP脚本
jsp中的三种脚本形式
第一种
下面这种就是直接输出到控制台
第二种
这种脚本形式会直接在前端页面上进行显示输出,翻译成.java文件时如下图,可以看见别的都翻译成了out.write("")形式作为response响应数据返回浏览器进行解析,而out.print(""),不光是字符串,也可以是一个变量。
第三种
在.java文件里面就会出现如下成员变量
练习
使用如下的List代替数据库查询
List<Brand> brands = new ArrayList<Brand>();
brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));
定义相对应的pojo类并设置setter和getter还有无参以及有参构造的方法等等
新开一个brand.jsp文件,里面使用一个List模拟数据库查询的结果
<%@ page import="org.example.pojo.Brand" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2023/3/21
Time: 18:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//查询数据库
List<Brand> brands = new ArrayList<Brand>();
brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));
%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="新增"><br>
<hr>
<table border="1" cellspacing="0" width="800">
<tr>
<th>序号</th>
<th>品牌名称</th>
<th>企业名称</th>
<th>排序</th>
<th>品牌介绍</th>
<th>状态</th>
<th>操作</th>
</tr>
<%
for(int i=0;i<brands.size();i++)
{Brand brand=brands.get(i);
%>
<tr align="center">
<td><%=brand.getId()%></td>
<td><%=brand.getBrandName()%></td>
<td><%=brand.getCompanyName()%></td>
<td><%=brand.getOrdered()%></td>
<td><%=brand.getDescription()%></td>
<%if(brand.getStatus()==1){//显示启用%>
<td><%="启用"%></td>
<%}else{//显示禁用%>
<td><%="禁用"%></td>
<%}%>
<td><a href="#">修改</a> <a href="#">删除</a></td>
</tr>
<%}%>
</table>
</body>
</html>
上述代码最终被翻译成了如下的.java文件,在这上面的代码中截断了多个{}到下面就又完整了
上面的代码效果如下
以上就是使用jsp脚本进行开发的一个小案例
jsp缺点
谁用谁知道这个jsp脚本写起来麻烦的一批
上面体现了是单独使用Servlet和单独使用JSP开发的坏处,将Servlet和JSP结合起来又可以解决一部分的问题,又产生两门新的技术EL表达式和JSTL标签。