1、什么是jsp呢?
实际上jsp就是一个servlet
在html页面中嵌入我们的java脚本
jsp的执行过程
1、翻译阶段
jsp在进行请求的时候会先被翻译成java文件
2、编译阶段
在将java文件编译成.class文件
3、执行
将处理之后的结果推送到我们的页面进行展示
如果我们jsp页面第二次访问直接加载编译好的.class文件,如果说第二次加载整整个文件,它修改了会再次进行翻译,在编译 在执行
2、jsp页面元素组成
1、page指令
作用:设置内部的多个属性定义整个页面的属性
设置的属性在整个页面都可以使用
2、小脚本和表达式
小脚本: <% 小脚本 ---java代码 %>
表达式: <%= %> 你可以堪称是输出语句
3、静态内容
HTML静态文本
4、指令:
以“<%@ ” 开始,以“%> ” 结束
5、声明 --方法的声明
<%! 方法 %>
6、注释
<%-- 客户端不能查看到 --%>
2、jsp中使用jdbc访问数据库
需求: 查询学生表信息展示到我们的jsp页面 jsp+jdbc 采用三层架构方式
采用的是三层架构的格式
1、将我们用的三层架构的包打出来
2、编写我们的basedao
z直接将我们之前写好的basedao拿过来使用
3、编写我们的实体对象(student)
public class StudentEntity {
private int stuId;
private String stuName;
private String gender;
private int age;
private Date birthday;
private int studentNO;
private int ClassID;
private String city;
private String email;
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public int getStudentNO() {
return studentNO;
}
public void setStudentNO(int studentNO) {
this.studentNO = studentNO;
}
public int getClassID() {
return ClassID;
}
public void setClassID(int classID) {
ClassID = classID;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
4、编写dao层接口
//查询学生表中所有信息
public List<StudentEntity> getStuList(String sql);
5、编写dao接口实现
PreparedStatement pst = null;
ResultSet rs = null;
@Override
public List<StudentEntity> getStuList(String sql) {
//声明一个最终返回的集合
List<StudentEntity> stulist = new ArrayList<StudentEntity>();
//连接数据库
Connection connection=BaseDao.getConnection();
//执行sql--先产生一个PreparedStatement
try {
pst = connection.prepareStatement(sql);
rs = pst.executeQuery(); //拿到结果集
while(rs.next()) {
//声明一个学生对象
StudentEntity student = new StudentEntity();
student.setStuId(rs.getInt("stuId"));
student.setStuName(rs.getString("stuName"));
student.setAge(rs.getInt("age"));
student.setCity(rs.getString("city"));
stulist.add(student);//将对象添加到集合中
}
} catch (SQLException e) {
e.printStackTrace();
}
return stulist;
}
6、编写service接口
//查询student表所有信息
public List<StudentEntity> findAll();
7、编写service接口实现
//实例化dao层对象
StudentDaoImpl StudentDao = new StudentDaoImpl();
@Override
public List<StudentEntity> findAll() {
//编写查询sql
String sql = "select * from studentinfo";
//调用dao层中的查询方法
List<StudentEntity> userlist =StudentDao.getStuList(sql);
return userlist;
}
8、编写jsp---stuinf.jsp
将我们学生信息展示到页面中
<%@page import="java.util.List"%>
<%@page import="com.dzqc.testStu.entity.StudentEntity"%>
<%@page import="com.dzqc.testStu.service.impl.StudentServiceImpl"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="2" align = "center">
<caption>学生信息列表</caption>
<tr>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
<td>城市</td>
</tr>
<!-- 读取业务层数据 -->
<%
//实例化业务层对象
StudentServiceImpl studentServiceImpl = new StudentServiceImpl();
//调用查询学生多有的信息方法
// List<StudentEntity> stulist =studentServiceImpl.findAll();
List<StudentEntity> stulist = studentServiceImpl.findAll();
for(int i = 0 ; i<stulist.size();i++){
StudentEntity stu =stulist.get(i);
%>
<tr>
<td><%=stu.getStuId() %></td>
<td><%=stu.getStuName() %></td>
<td><%=stu.getAge() %></td>
<td><%=stu.getCity() %></td>
</tr>
<%}%>
</table>
</body>
</html>