JSP入门
第一步:导入JSP坐标
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
第二步创建JSP文件
webapp->new->jsp
第三步 写jsp代码
<%--
Created by IntelliJ IDEA.
User: ASUS
Date: 2022/9/5
Time: 19:46
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1> 你好jsp</h1>
<%
System.out.println("hello");
%>
</body>
</html>
JSP的原理
概念:Java Server Pages , Java服务端页面
JSP=HTML+Java ,用于简化开发
JSP本质上就是一个Servlet
JSP在被访问是,有JSP容器(Tomcat)将其转化为Java文件(Servlet),有容器(Tomcat)将其编译,最终对外提供服务的其实就是这个字节码文件
JSP脚本
用于在JSP页面定义java代码
JSP脚本分类 (在idea中直接 <% 回车就会自动打出)
<%...%> :内容会直接放到_jspService()方法中
<%=...%>: 内容会放到out.print() 中,作为out.print()的参数
<%!....>: 内容会放到_jspService()方法之外,被类直接包含。也就是成员变量的位置
这里来写个小案例模拟,从数据库拿数据输出到页面表格中
创建个学生类
package com.chen.pojo;
public class Student {
private String name;
private int age;
private String ClassName;
public Student(String name, int age, String className) {
this.name = name;
this.age = age;
ClassName = className;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClassName() {
return ClassName;
}
public void setClassName(String className) {
ClassName = className;
}
}
创建JSP代码
这里要注意一下,你在使用List集合中,要完整的写
List<Student> slist=new ArrayList<Student>();你要是像在java中写代码写成这样
List<Student> slist=new ArrayList<>();
一会运行jsp的时候就会给你报错nable to compile class for JSP: 尖括号 operator is not allowed for source level below 1.7 我当时就搞了半天没看出来是那里有毛病
在jsp中,<% %> 中没有办法直接嵌套html代码,需要给他分割开, 本案例就是for循环嵌套html代码
<%@ page import="java.util.List" %>
<%@ page import="com.chen.pojo.Student" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: ASUS
Date: 2022/9/6
Time: 7:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List<Student> slist=new ArrayList<Student>();
slist.add(new Student("张三",20,"软件一班")); //模拟数据
slist.add(new Student("李四",21,"软件二班"));
slist.add(new Student("王五",22,"软件三班"));
%>
<table border="1" cellspacing="0" width="500">
<tr >
<th>姓名</th>
<th>年龄</th>
<th>班级</th>
</tr>
<%
for (int i = 0; i < slist.size(); i++) {
Student student = slist.get(i);
%>
<tr>
<td><%=student.getName()%></td>
<td><%=student.getAge()%></td>
<td><%=student.getClassName()%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
遍历完如下
JSP缺点
由于JSP页面内,既可以定义HTML标签,又可以定义Java代码,造成一下问题
书写麻烦,特别是复杂的页面
阅读麻烦
复杂度高,运行需要依赖各种环境,JRE,JSP容器,javaEE
占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存
调试空难:出错后,需要找到自动生成的.java文件进行调试
不利于团队协作:前端人员不会java,后端人员不精HTML
JSP已逐渐退出历史舞台