1.JavaBean规范
1.1简介
1.什么是JavaBean?
- 公共的类
- 必须有一个无参数的构造方法
- 属性一般都是private的,必须有get和set的方法
- JavaBean中可以封装一些业务实现的方法
1.2创建JavaBean对象
1.案例:创建一个JavaBean对象
第一步:建立一个数据库表。(为创建JavaBean对象做好准备)
- 创建一个名为“vue”的数据库
- 创建一个user表
第二步:创建JavaBean对象User
package pojo;
//创建JavaBean对象
public class User {
private String id;
private String name;
private String password;
public String getId() {
return id;
}
//get和set方法
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(String id, String name, String password) {
super();
this.id = id;
this.name = name;
this.password = password;
}
//无参数的构造
public User() {
super();
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
}
}
1.3访问JavaBean对象
1.如何进行访问?
采用的是动作元素的方式进行访问我们的JavaBean对象。
第一步:创建test.jsp
采用的是设置value的方式进行设置JavaBean属性的值。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--创建JavaBean对象) --%>
<jsp:useBean id="user" class="pojo.User"/>
<%--设置JavaBean对象的属性)(第一种设置属性的方式) --%>
<jsp:setProperty property="id" name="user" value="001"/>
<jsp:setProperty property="name" name="user" value="张三"/>
<jsp:setProperty property="password" name="user" value="1234465"/>
<%--访问JavaBean对象(第一种访问的方式) --%>
<jsp:getProperty property="id" name="user"/>
<jsp:getProperty property="name" name="user"/>
<jsp:getProperty property="password" name="user"/>
</body>
</html>
效果图:
1.4创建一个简单的登录页面
1.第一步:创建一个简单的登录界面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<h1>登录界面</h1>
<form action="handleLogin.jsp" method="get">
账号:<input trype="text" name="id"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
效果图:
2.第二步:创建一个接收和处理login界面的信息。handle.jsp
该界面采用的是直接匹配字段的额方式接收的参数。property设置的*。如果名字不一致的话,就接收不到任何的信息。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--创建JavaBean对象) --%>
<jsp:useBean id="user" class="pojo.User"/>
<%--设置JavaBean对象的属性)(第一种设置属性的方式) --%>
<jsp:setProperty property="*" name="user" />
<%--访问JavaBean对象(第一种访问的方式) --%>
账号:<jsp:getProperty property="id" name="user"/><br>
用户名:<jsp:getProperty property="name" name="user"/><br>
密码:<jsp:getProperty property="password" name="user"/><br>
</body>
</html>
效果图:
1.5handleLogin的静态处理登录
要求可以对login界面的账号和密码的请求的正确性做出一个简单的判断,如果说密码正确的话就会进行返回success界面等待3秒之后会跳转到index界面。如果登录失败的话就会返回一个失败的界面fail界面,并等待3秒就会跳转到login界面。
第一步:重新编写handleLogin界面
增加的功能上是密码正确性的判断。验证成功后转发到success界面,登录失败后转发到fail重定向到fail界面。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>验证界面</title>
</head>
<body>
<%--创建JavaBean对象) --%>
<jsp:useBean id="user" class="pojo.User" scope="request"/>
<%--设置JavaBean对象的属性)(第一种设置属性的方式) --%>
<jsp:setProperty property="*" name="user" />
<%
//对提交的密码的正确性进行一个简单的判断
if(user.getId().toString().equals("123")&&user.getPassword().toString().equals("123456")){
//密码正确时的提交
%>
<jsp:setProperty property="name" name="user" value="张三"/>
<%
request.getRequestDispatcher("success.jsp").forward(request, response);
} else{
//密码错误时的提交
response.sendRedirect("fail.jsp");
};
%>
</body>
</html>
第二步:创建success界面
使用header属性设置3秒刷新,并设置提交的地址。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>success</title>
</head>
<body>
<jsp:useBean class="pojo.User" id="user" scope="request"/>
<h1>你好:<jsp:getProperty property="name" name="user"/>
,欢迎您的登录!</h1>
<%-- 设置成功登陆的界面每个3秒钟刷新一次 --%>
<% response.setHeader("refresh", "3;url=index.jsp"); %>
</body>
</html>
第三步:创建一个简单得首页。index.jsp。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>欢迎来到首页!</h1>
</body>
</html>
第四步:创建一个简单的fail界面。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录失败</title>
</head>
<body>
<%! int i=5; %>
<h1>很遗憾,登录失败,正在返回首页,剩余<%=i-- %>秒</h1>
<%
//设置页面的刷新状态
if(i<=0){
i=5;
response.setHeader("refresh", "1;url=login.html");
}
//等待页面5秒
else
{
response.setHeader("refresh", "1");
}
%>
</body>
</html>
1.6连接数据库验证账号密码
连接数据库进行账号和密码正确性的验证,并对用户名进行一个查询。
第一步:导入mysql8.0.12的驱动,并添加至构建路径。
第二步:创建一个数据库连接的工具类。JDBCConnection.java
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCConnection {
// 准备工作
private static final String driverName="com.mysql.cj.jdbc.Driver";
private static final String url="jdbc:mysql://localhost:3306/vue?characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false";
private static final String dbUser="root";
private static final String dbPswd="root";
// 构造函数
public JDBCConnection(){}
// 静态static块
static {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 2.创建连接对象
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,dbUser,dbPswd);
}
// 5.关闭资源对象
public static void close(Connection conn,Statement state,ResultSet resu) {
// 关闭结果集
if(resu!=null) {
try {
resu.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭Statement对象
if(state!=null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭连接对象
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
第三步:编写登录的业务逻辑。
我就先不在JavaBean中写了,我就单独新建一个类,起到的作用和JavaBean+jsp的开发模式是一样的效果。
创建一个dao包,并新建一个UserDao,编写操作数据库表的业务逻辑。
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import pojo.User;
import util.JDBCConnection;
public class UserDao {
//add操作-传入的是User
public static User getUserById(User user) throws SQLException {
// 创建一个新的User对象
User myuser=new User();
// 创建连接工具类对象
JDBCConnection jdbc=new JDBCConnection();
// 1.创建连接的对象
Connection conn=jdbc.getConnection();
// 2.定义sql语句
String sql ="select * from user where id=? and password=?";
// 2.创建PrepareStatement对象
PreparedStatement pre=conn.prepareStatement(sql);
// 3.和statement不同的地方出现了
pre.setString(1, user.getId());
pre.setString(2, user.getPassword());
// 4.提交sql操作
ResultSet rs=pre.executeQuery();
// 5.读取获取的资源
if(rs.next()) {
myuser.setId(rs.getString("id"));
myuser.setName(rs.getString("name"));
myuser.setPassword(rs.getString("password"));
}
// 读取不到就返回空值
else {
return null;
}
// 5.关闭资源对象
jdbc.close(conn, pre, null);
// 返回资源对象
return myuser;
}
}
第四步:重现编写处理登录的界面,HandleLogin。
第一步需要先导入我们创建的UserDao,我采用的是import导入的方式。
获取完用户的信息后需要,request.setAttribute("user", user) ;重新设置用户的信息并上传。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="pojo.User,dao.UserDao"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>验证界面</title>
</head>
<body>
<%--创建JavaBean对象) --%>
<jsp:useBean id="user" class="pojo.User" scope="request"/>
<%--设置JavaBean对象的属性)(第一种设置属性的方式) --%>
<jsp:setProperty property="*" name="user" />
<%
//调用getUserById
user=UserDao.getUserById(user);
//对提交的密码的正确性进行一个简单的判断
if(user!=null){
System.out.print(user.toString());
//重新设置user的信息
request.setAttribute("user", user) ;
//密码正确时的提交
request.getRequestDispatcher("success.jsp").forward(request, response);
}
else{
response.sendRedirect("fail.jsp");
}
;
%>
</body>
</html>
第五步:成功登录的界面。success的重新编写。
对登录成功的用户的个人信息进行一个简单的信息。可以对密码进行隐藏。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="pojo.User"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>success</title>
</head>
<body>
<%--创建JavaBean对象) --%>
<jsp:useBean id="user" class="pojo.User" scope="request"/>
<%--设置JavaBean对象的属性)(第一种设置属性的方式) --%>
<h1>你好:</h1>
<h2>账号:<jsp:getProperty property="id" name="user" /> <br>
用户名:<jsp:getProperty property="name" name="user" /> <br>
密码:<jsp:getProperty property="password" name="user" /> <br>
</h2>
<h2>欢迎您的登录!</h2>
<%-- 设置成功登陆的界面每个3秒钟刷新一次 --%>
<% response.setHeader("refresh", "3;url=index.jsp"); %>
</body>
</html>
效果图:
跳转之后的:
1.7首页的编写
1.第一步:先对success进行改进。
将当前的user放入session中去。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="pojo.User"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>success</title>
</head>
<body>
<%--创建JavaBean对象) --%>
<jsp:useBean id="user" class="pojo.User" scope="request"/>
<%--设置JavaBean对象的属性)(第一种设置属性的方式) --%>
<h1>你好:</h1>
<h2>账号:<jsp:getProperty property="id" name="user" /> <br>
用户名:<jsp:getProperty property="name" name="user" /> <br>
密码:<jsp:getProperty property="password" name="user" /> <br>
</h2>
<h2>欢迎您的登录!</h2>
<%-- 设置成功登陆的界面每个3秒钟刷新一次 --%>
<%
//将user设置到session中
session.setAttribute("user", user);
response.setHeader("refresh", "3;url=index.jsp"); %>
</body>
</html>
第二步:编写index首页。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,pojo.*,dao.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div style="text-align: center;">
<h1 >学生管理系统</h1>
<p style="text-align: center;">当前用户是:<jsp:getProperty property="name" name="user"/>;今天是:<%=new java.util.Date() %></p>
<div >用户名:<input type="text" /> <button>查询</button>
</div>
<div><a href="add.jsp">添加新用户</a></div>
<div align="center">
<table width="500px" border="1" style="border-collapse: collapse;padding:0px 0px 0px 0px;">
<tr>
<td style="padding:10px;">账号</td>
<td style="padding:10px;">姓名</td>
<td style="padding:10px;">密码</td>
<td style="padding:10px;">修改操作</td>
<td style="padding:10px;">删除操作</td>
</tr>
<%
List<User> list=UserDao.selectUser();
//out.print(list.toString());
for(User u:list){
%>
<tr >
<td style="padding:10px;"><%=u.getId()%></td>
<td style="padding:10px;"><%=u.getName()%></td>
<td style="padding:10px;"><%=u.getPassword()%></td>
<td style="padding:10px;"><a href="update.jsp">修改操作</a></td>
<td style="padding:10px;"><a href="delete.jsp">删除操作</a></td>
</tr>
<%
}%>
</table>
</div>
<div>版权所有</div>
</div>
<jsp:useBean id="user" class="pojo.User" scope="session"/>
</body>
</html>
第三步:编写add界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="addHandle.jsp" method="get">
<%--用于添加新的用户 --%>
手机号:<input type="text" name="id"><br>
用户名:<input type="text" name="name"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="提交"><br>
</form>
</body>
</html>
第四步:编写UserDao
在UserDao中添加add用户的操作
//添加用户
public static int addUser(User user) throws SQLException {
// 创建连接工具类对象
JDBCConnection jdbc=new JDBCConnection();
// 1.创建连接的对象
Connection conn=jdbc.getConnection();
// 2.定义sql语句
String sql ="insert into user(id,name,password) values(?,?,?)";
// 2.创建PrepareStatement对象
PreparedStatement pre=conn.prepareStatement(sql);
// 3.和statement不同的地方出现了
pre.setString(1, user.getId());
pre.setString(2, user.getName());
pre.setString(3, user.getPassword());
// 4.提交sql操作
int line=0;
try {
line=pre.executeUpdate();
}
catch(Exception e) {
line=0;
}
// 5.关闭资源对象
jdbc.close(conn, pre, null);
// 插入成功的话就返回1.失败就返回-1
return line;
}
第五步:编写addHandle,用户处理添加用户的操作。
<%@page import="dao.UserDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="dao.UserDao"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>处理add的界面</title>
</head>
<body>
<%--处理add用户的操作 --%>
<jsp:useBean id="adduser" class="pojo.User" scope="session"/>
<jsp:setProperty property="*" name="adduser"/>
<%-- 调用dao层的方法添加用户--%>
<%
int line=UserDao.addUser(adduser);
//根据line判断插入失败还是成功
if(line==1){
request.getRequestDispatcher("addSuccess.jsp").forward(request, response);
}
else{
response.sendRedirect("addFail.jsp");
};
%>
</body>
</html>
第六步:创建add成功的界面。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="pojo.User"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>addSuccess</title>
</head>
<body>
<h1>你好:</h1>
<h2>账号:<jsp:getProperty property="id" name="user" /> <br>
用户名:<jsp:getProperty property="name" name="user" /> <br>
密码:<jsp:getProperty property="password" name="user" /> <br>
</h2>
<h2>欢迎您注册成功!3秒后将会自动登录!</h2>
<%-- 设置成功登陆的界面每个3秒钟刷新一次 --%>
<%
response.setHeader("refresh", "3;url=index.jsp"); %>
<%--创建JavaBean对象) --%>
<jsp:useBean id="user" class="pojo.User" scope="session"/>
<%--设置JavaBean对象的属性)(第一种设置属性的方式) --%>
<jsp:setProperty property="id" name="user" value="${param.id }"/> <br>
<jsp:setProperty property="name" name="user" value="${param.name }" /> <br>
<jsp:setProperty property="password" name="user" value="${param.password }"/> <br>
</body>
</html>
注册成功:
回到首页:
第七步:编写查询所有用户的操作。UserDao
//查询所有的用户
public static List<User> selectUser() throws SQLException {
// 创建连接工具类对象
JDBCConnection jdbc=new JDBCConnection();
// 1.创建连接的对象
Connection conn=jdbc.getConnection();
// 2.定义sql语句
String sql ="select * from user";
// 2.创建PrepareStatement对象
PreparedStatement pre=conn.prepareStatement(sql);
// 3.和statement不同的地方出现了
// 4.提交sql操作
ResultSet rs=null;
List<User> users=new ArrayList<User>();
try {
rs=pre.executeQuery();
while(rs.next()) {
User user =new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
// 添加用户
users.add(user);
}
}
catch(Exception e) {
// 没有的话返回null
users=null;
}
// 5.关闭资源对象
jdbc.close(conn, pre, null);
// 返回结果的数组
return users;
}
第八步:index的运行图
1.8修改界面
第一步:创建修改界面update。
假设只能修改账号和密码。
设置隐藏的id是关键.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>更新操作</title>
</head>
<body>
<form action="updateHandle.jsp" method="get">
<%--用于添加新的用户 --%>
<h1>输入要修改的信息</h1>
<input type="hidden" name="id" value="${param.id }" style="display:none;">
用户名:<input type="text" name="name"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="提交"><br>
</form>
</body>
</html>
第二步:创建处理更新的界面。updateHandle。
<%@page import="dao.UserDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="dao.UserDao"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>处理update的界面</title>
</head>
<body>
<%--处理add用户的操作 --%>
<jsp:useBean id="updateuser" class="pojo.User" scope="session"/>
<jsp:setProperty property="*" name="updateuser"/>
<%-- 调用dao层的方法添加用户--%>
<%
System.out.println(updateuser.toString());
int line=UserDao.updateUser(updateuser);
//根据line判断插入失败还是成功
if(line==1){
request.getRequestDispatcher("updateSuccess.jsp").forward(request, response);
}
else{
response.sendRedirect("updateFail.jsp");
};
%>
</body>
</html>
第三步:创建更新的操作。UserDao。
//更新用户
public static int updateUser(User user) throws SQLException {
// 创建连接工具类对象
JDBCConnection jdbc=new JDBCConnection();
// 1.创建连接的对象
Connection conn=jdbc.getConnection();
// 2.定义sql语句
String sql ="iupdate user set name=? ,password=? where id =?";
// 2.创建PrepareStatement对象
PreparedStatement pre=conn.prepareStatement(sql);
// 3.和statement不同的地方出现了
pre.setString(1, user.getName());
pre.setString(2, user.getPassword());
pre.setString(3, user.getId());
// 4.提交sql操作
int line=0;
try {
line=pre.executeUpdate();
}
catch(Exception e) {
line=0;
}
// 5.关闭资源对象
jdbc.close(conn, pre, null);
// 插入成功的话就返回1.失败就返回-1
return line;
}
第三步:更新成功的界面.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>更新成功</title>
</head>
<body>
<h1>恭喜您!更新成功!3秒后返回首页</h1>
<% response.setHeader("refresh", "3;url=index.jsp"); %>
</body>
</html>
第四步:更新失败的界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>更新失败</title>
</head>
<body>
<h1>更新失败!3s后返回首页</h1>
<% response.setHeader("refresh", "3;url=index.jsp"); %>
</body>
</html>
1.9根据s用户名的模糊查询
第一步:编写dao中的模糊查询操作。
//姓名的模糊查询
public static List<User> selectUserByName(String name) throws SQLException {
// 创建连接工具类对象
JDBCConnection jdbc=new JDBCConnection();
// 1.创建连接的对象
Connection conn=jdbc.getConnection();
// 2.定义sql语句
String sql ="select * from user where name like concat('%',?,'%')";
// 2.创建PrepareStatement对象
PreparedStatement pre=conn.prepareStatement(sql);
// 3.和statement不同的地方出现了
pre.setString(1, name);
// 4.提交sql操作
ResultSet rs=null;
List<User> users=new ArrayList<User>();
try {
rs=pre.executeQuery();
while(rs.next()) {
User user =new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
// 添加用户
users.add(user);
}
}
catch(Exception e) {
// 没有的话返回null
users=null;
}
// 5.关闭资源对象
jdbc.close(conn, pre, null);
// 返回结果的数组
return users;
}
第二步:对index页面的修改。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,pojo.*,dao.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div style="text-align: center;">
<h1 >学生管理系统</h1>
<p style="text-align: center;">当前用户是:<jsp:getProperty property="name" name="user"/>;今天是:<%=new java.util.Date() %></p>
<div ><form action="selectUserByName.jsp" method="post">用户名:<input type="text" name="name" /> <input type="submit" value="提交"></form>
</div>
<div><a href="add.jsp">添加新用户</a></div>
<div align="center">
<table width="500px" border="1" style="border-collapse: collapse;padding:0px 0px 0px 0px;">
<tr>
<td style="padding:10px;">账号</td>
<td style="padding:10px;">姓名</td>
<td style="padding:10px;">密码</td>
<td style="padding:10px;">修改操作</td>
<td style="padding:10px;">删除操作</td>
</tr>
<%
List<User> list=new ArrayList<User>();
if(session.getAttribute("list")!=null){
list=(List<User>)session.getAttribute("list");
}
else{
list=UserDao.selectUser();
}
//out.print(list.toString());
for(User u:list){
%>
<tr >
<td style="padding:10px;"><%=u.getId()%></td>
<td style="padding:10px;"><%=u.getName()%></td>
<td style="padding:10px;"><%=u.getPassword()%></td>
<td style="padding:10px;"><a href="update.jsp">修改操作</a></td>
<td style="padding:10px;"><a href="delete.jsp">删除操作</a></td>
</tr>
<%
}%>
</table>
</div>
<div>版权所有</div>
</div>
<jsp:useBean id="user" class="pojo.User" scope="session"/>
</body>
</html>
第三步:对模糊查询界面的修改。selectUserByName。
采用的是response.setHeader("refresh", "0;url=index.jsp");的跳转方式,没使用请求转发的形式。
需要对当前页面的编码进行一个简单的设置。request.setCharacterEncoding("utf-8");。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,pojo.*,dao.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--根据姓名的模糊查询 --%>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
System.out.println(name);
List<User> users=new ArrayList<User>();
if(name.equals("")||name==null){
users=UserDao.selectUser();
}
else{
users=UserDao.selectUserByName(name);
}
//设置返回的结果
session.setAttribute("list", users);
response.setHeader("refresh", "0;url=index.jsp");
//request.getRequestDispatcher("index.jsp").forward(request, response);
%>
</body>
</html>
运行截图:查询所有性张的用户。
1.10删除界面
第一步:修改index.html
只需要修改这一个简单的地方就可以.
<td style="padding:10px;"><a href="deleteHandle.jsp?id=<%=u.getId()%>">删除操作</a></td>
第二步:创建deleteHandle界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,pojo.*,dao.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>处理删除界面</title>
</head>
<body>
<%
String id=request.getParameter("id");
//out.print(id);
//调用删除的操作
int line=UserDao.deleteUser(id);
//out.print(line);
//对提交的密码的正确性进行一个简单的判断
if(line==1){
//密码正确时的提交
request.getRequestDispatcher("deletesuccess.jsp").forward(request, response);
}
else{
response.sendRedirect("deleteFail.jsp");
}
;
%>
</body>
</html>
第三步:创建处理删除的操作.UserDao
//删除用户
public static int deleteUser(String id) throws SQLException {
// 创建连接工具类对象
JDBCConnection jdbc=new JDBCConnection();
// 1.创建连接的对象
Connection conn=jdbc.getConnection();
// 2.定义sql语句
String sql ="delete from user where id =?";
// 2.创建PrepareStatement对象
PreparedStatement pre=conn.prepareStatement(sql);
// 3.和statement不同的地方出现了
pre.setString(1, id);
// 4.提交sql操作
int line=0;
try {
line=pre.executeUpdate();
}
catch(Exception e) {
line=0;
}
// 5.关闭资源对象
jdbc.close(conn, pre, null);
// 插入成功的话就返回1.失败就返回-1
return line;
}
第四步:创建删除失败的界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>删除失败</title>
</head>
<body>
<h1>删除失败!3s后返回首页</h1>
<% response.setHeader("refresh", "3;url=index.jsp"); %>
</body>
</html>
第五步:创建删除成功的界面.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>删除成功</title>
</head>
<body>
<h1>恭喜您!删除成功!3秒后返回首页</h1>
<% response.setHeader("refresh", "3;url=index.jsp"); %>
</body>
</html>
1.11效果图
不足的地方,我会及时的跟进。