目录
jsp小练习01
jdbc小练习01
设计数据库
以下是一个基本的登录页面(login.jsp):
以下是checklogin.jsp页面的示例代码:
以下是main.jsp页面的示例代码:
以下是add.jsp页面的示例代码:
以下是doadd.jsp页面的示例代码:
以下是edit.jsp页面的示例代码:
以下是doedit.jsp页面的示例代码,用于实现更新名片信息的功能。
以下是search.jsp的示例代码:
以下是delete.jsp的示例代码:
以下是recycle.jsp的示例代码:
以下是recover.jsp的示例代码:
用jsp设计:.应用Date函数读取系统当前时间,根据不同的时间段,在浏览器输出不同的问候语,例如上午0~12点之间输出“早上好”,同时把系统的年、月、日、小时、分、秒和星期输出到用户的浏览器。
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
问候语
<%
// 获取当前的时间
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E");
String currentTime = dateFormat.format(now);
// 获取当前的小时数
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
// 根据不同时间段输出不同的问候语
String greeting;
if (hour >=0 && hour < 12) {
greeting = "早上好";
} else if (hour >= 12 && hour < 18) {
greeting = "下午好";
} else {
greeting = "晚上好";
}
// 输出问候语和时间
out.println("" + greeting + "
");
out.println("现在是:" + currentTime + "
");
%>
利用JDBC设计:
1.设计一个简单的网上名片管理系统,实现名片的增、删、改、查等操作。该名片管理系统包括如下功能:
(1)用户登录与注册
用户登录:在登录时,如果用户名和密码正确,进入系统页面。
用户注册:新用户应该先注册,然后再登录该系统。
(2)名片管理
增加名片:以仿真形式(按常用的名片格式)增加名片信息。
修改名片:以仿真形式(按常用的名片格式)修改名片信息。
查询名片:以模糊查询方式查询名片。
删除名片:名片的删除由2种方式,即把名片移到回收站,把名片彻底删除。
(3)回收站管理
还原:把回收站中的名片还原回收。
彻底删除:把名片彻底从回收站删除。
浏览/查询:可以模糊查询、浏览回收站中的名片。
首先,需要设计数据库表来存储名片信息和用户信息。以下是名片信息表和用户信息表的设计:
名片信息表cards:
用户信息表users:
接着,需要编写JSP页面来实现登录、注册、名片管理和回收站管理功能。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
登录 - 网上名片管理系统
网上名片管理系统 - 登录
在该页面中,用户输入用户名和密码后提交表单,将会跳转到checklogin.jsp页面进行校验。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
登录结果 - 网上名片管理系统
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
// 连接数据库进行验证
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
// 登录成功
session.setAttribute("userid", rs.getInt("id"));
response.sendRedirect("main.jsp"); // 跳转到主页面
} else {
// 登录失败
out.println("用户名或密码错误,请重新登录!
");
out.println("返回登录页面");
}
rs.close();
stmt.close();
conn.close();
%>
在该页面中,首先获取从login.jsp传递过来的用户名和密码。然后,连接数据库进行验证。如果用户名和密码正确,则将用户ID存储在session中,并跳转到main.jsp页面。否则,返回登录页面。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
网上名片管理系统
<%
int userid = (int) session.getAttribute("userid");
// 连接数据库,获取用户信息和名片信息
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
// 获取用户信息
String sql = "SELECT * FROM users WHERE id='" + userid + "'";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
String username = rs.getString("username");
out.println("网上名片管理系统 - " + username + "
");
}
rs.close();
// 显示已有名片信息
sql = "SELECT * FROM cards WHERE userid='" + userid + "'";
rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String company = rs.getString("company");
String phone = rs.getString("phone");
String mobile = rs.getString("mobile");
String fax = rs.getString("fax");
String email = rs.getString("email");
String address = rs.getString("address");
out.println("名片" + id + "
");
out.println("");
out.println("姓名: " + name + " ");
out.println("公司: " + company + " ");
out.println("电话: " + phone + " ");
out.println("手机: " + mobile + " ");
out.println("传真: " + fax + " ");
out.println("邮箱: " + email + " ");
out.println("地址: " + address + " ");
out.println("
");
out.println("编辑 ");
out.println("删除
");
}
rs.close();
// 关闭数据库连接
stmt.close();
conn.close();
%>
新增名片
回收站
退出登录
在该页面中,首先根据session中保存的用户ID查询用户信息,然后显示已有的名片信息。
同时,在该页面中提供了三个链接,用于新增名片、回收站和退出登录。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
新增名片 - 网上名片管理系统
网上名片管理系统 - 新增名片
该页面用于输入新增名片的信息。表单提交后将会跳转到doadd.jsp页面进行数据库操作。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
新增名片结果 - 网上名片管理系统
<%
int userid = (int) session.getAttribute("userid");
String name = request.getParameter("name");
String company = request.getParameter("company");
String phone = request.getParameter("phone");
String mobile = request.getParameter("mobile");
String fax = request.getParameter("fax");
String email = request.getParameter("email");
String address = request.getParameter("address");
// 连接数据库,执行插入操作
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
String sql = "INSERT INTO cards (name, company, phone, mobile, fax, email, address, userid) VALUES ('" + name + "', '" + company + "', '" + phone + "', '" + mobile + "', '" + fax + "', '" + email + "', '" + address + "', '" + userid + "')";
stmt.executeUpdate(sql);
stmt.close();
conn.close();
// 返回主页面
response.sendRedirect("main.jsp");
%>
在该页面中,首先获取表单提交过来的新增名片信息,然后连接数据库执行插入操作。插入成功后,将会跳转到主页面。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
编辑名片 - 网上名片管理系统
网上名片管理系统 - 编辑名片
<%
int id = Integer.parseInt(request.getParameter("id"));
int userid = (int) session.getAttribute("userid");
// 连接数据库,获取名片信息
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM cards WHERE id='" + id + "' AND userid='" + userid + "'";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
String name = rs.getString("name");
String company = rs.getString("company");
String phone = rs.getString("phone");
String mobile = rs.getString("mobile");
String fax = rs.getString("fax");
String email = rs.getString("email");
String address = rs.getString("address");
out.println("");
} else {
out.println("无权访问此名片!
");
}
rs.close();
stmt.close();
conn.close();
%>
在该页面中,首先获取从main.jsp传递过来的名片ID和用户ID,并连接数据库查询名片信息。如果查询到符合条件的名片,则将名片信息显示到表单中,并在form标签中添加隐藏的id字段。表单提交后将会跳转到doedit.jsp页面进行数据库操作。如果无权访问此名片,则输出无权访问的提示信息。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
编辑名片 - 网上名片管理系统
网上名片管理系统 - 编辑名片
<%
int id = Integer.parseInt(request.getParameter("id"));
int userid = (int) session.getAttribute("userid");
String name = request.getParameter("name");
String company = request.getParameter("company");
String phone = request.getParameter("phone");
String mobile = request.getParameter("mobile");
String fax = request.getParameter("fax");
String email = request.getParameter("email");
String address = request.getParameter("address");
// 连接数据库,更新名片信息
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
String sql = "UPDATE cards SET name='" + name + "', company='" + company + "', phone='" + phone +
"', mobile='" + mobile + "', fax='" + fax + "', email='" + email + "', address='" + address +
"' WHERE id='" + id + "' AND userid='" + userid + "'";
int rows = stmt.executeUpdate(sql);
if (rows == 1) {
out.println("名片更新成功!
");
} else {
out.println("名片更新失败!
");
}
stmt.close();
conn.close();
%>
在该页面中,首先获取从编辑名片页面传递过来的名片ID和用户ID,以及提交的新的名片信息。然后连接数据库,执行UPDATE语句更新名片信息。如果更新成功,则输出更新成功的提示信息,否则输出更新失败的提示信息。最后关闭数据库连接。
以下是doedit.jsp页面的完整示例代码,包括表单校验和重定向到main.jsp页面的功能。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
编辑名片 - 网上名片管理系统
网上名片管理系统 - 编辑名片
<%
int id = Integer.parseInt(request.getParameter("id"));
int userid = (int) session.getAttribute("userid");
String name = request.getParameter("name");
String company = request.getParameter("company");
String phone = request.getParameter("phone");
String mobile = request.getParameter("mobile");
String fax = request.getParameter("fax");
String email = request.getParameter("email");
String address = request.getParameter("address");
// 表单校验
if (name == null || company == null || phone == null || mobile == null ||
name.equals("") || company.equals("") || (phone.equals("") && mobile.equals(""))) {
response.sendRedirect("edit.jsp?id=" + id);
return;
}
// 连接数据库,更新名片信息
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
String sql = "UPDATE cards SET name='" + name + "', company='" + company + "', phone='" + phone +
"', mobile='" + mobile + "', fax='" + fax + "', email='" + email + "', address='" + address +
"' WHERE id='" + id + "' AND userid='" + userid + "'";
int rows = stmt.executeUpdate(sql);
if (rows == 1) {
response.sendRedirect("main.jsp");
} else {
out.println("名片更新失败!
");
}
stmt.close();
conn.close();
%>
以下是查询名片、删除名片和回收站管理的示例代码。其中,模糊查询使用LIKE子句实现,删除名片分为将名片移动到回收站和彻底删除两种,回收站管理包括还原和彻底删除。
查询名片的功能可以在main.jsp页面上添加一个查询表单,用户输入关键字后提交,调用search.jsp页面进行查询。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
查询名片 - 网上名片管理系统
网上名片管理系统 - 查询名片
<%
String keyword = request.getParameter("keyword");
if (keyword == null) {
keyword = "";
}
// 连接数据库,查询名片信息
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM cards WHERE name LIKE '%" + keyword + "%' OR company LIKE '%" + keyword + "%' ORDER BY id DESC";
ResultSet rs = stmt.executeQuery(sql);
// 输出查询结果
if (!rs.next()) {
out.println("没有符合条件的名片!
");
} else {
out.println("");
out.println("ID 姓名 公司 电话 手机 操作 ");
do {
int id = rs.getInt("id");
String name = rs.getString("name");
String company = rs.getString("company");
String phone = rs.getString("phone");
String mobile = rs.getString("mobile");
out.println("" + id + " " + name + " " + company + " " + phone +
" " + mobile + " 编辑 删除 ");
} while (rs.next());
out.println("
");
}
rs.close();
stmt.close();
conn.close();
%>
在该页面中,根据用户输入的关键字(模糊查询),构造SELECT语句查询名片信息,并输出查询结果。如果没有符合条件的名片,则输出相应提示信息。
删除名片的功能可以通过在主页面中添加“删除”链接实现。点击该链接后,调用delete.jsp进行名片删除,根据用户选择的方式将名片移动到回收站或彻底删除。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
删除名片 - 网上名片管理系统
网上名片管理系统 - 删除名片
<%
int id = Integer.parseInt(request.getParameter("id"));
String action = request.getParameter("action");
if (action == null) {
action = "";
}
// 连接数据库,删除名片信息
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
int rows = 0;
if (action.equals("discard")) {
// 将名片移动到回收站
rows = stmt.executeUpdate("UPDATE cards SET discard=1 WHERE id='" + id + "'");
} else {
// 彻底删除名片
rows = stmt.executeUpdate("DELETE FROM cards WHERE id='" + id + "'");
}
if (rows == 1) {
response.sendRedirect("main.jsp");
} else {
out.println("名片删除失败!
");
}
stmt.close();
conn.close();
%>
在该页面中,根据用户选择的操作(移动到回收站或彻底删除),构造UPDATE或DELETE语句删除名片信息,并在成功删除后重定向到主页面main.jsp。
回收站管理的功能可以添加一个链接或按钮在主页面中,点击后进入recycle.jsp页面进行回收站管理。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
回收站管理 - 网上名片管理系统
网上名片管理系统 - 回收站管理
<%
String keyword = request.getParameter("keyword");
if (keyword == null) {
keyword = "";
}
// 连接数据库,查询回收站中的名片信息
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM cards WHERE discard=1 AND name LIKE '%" + keyword +
"%' OR company LIKE '%" + keyword + "%' ORDER BY id DESC";
ResultSet rs = stmt.executeQuery(sql);
// 输出查询结果
if (!rs.next()) {
out.println("回收站中没有名片!
");
} else {
out.println("");
out.println("ID 姓名 公司 电话 手机 操作 ");
do {
int id = rs.getInt("id");
String name = rs.getString("name");
String company = rs.getString("company");
String phone = rs.getString("phone");
String mobile = rs.getString("mobile");
out.println("" + id + " " + name + " " + company + " " + phone +
" " + mobile + " 还原 彻底删除 ");
} while (rs.next());
out.println("
");
}
rs.close();
stmt.close();
conn.close();
%>
在该页面中,根据用户输入的关键字(模糊查询),构造SELECT语句查询回收站中的名片信息,并输出查询结果。其中,每条查询结果均包含一个“还原”链接和一个“彻底删除”链接,分别调用recover.jsp和delete.jsp进行还原和彻底删除操作。
还原名片的功能可以在recover.jsp页面中实现,调用UPDATE语句将名片从回收站中还原。
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
还原名片 - 网上名片管理系统
网上名片管理系统 - 还原名片
<%
int id = Integer.parseInt(request.getParameter("id"));
// 连接数据库,还原名片
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("UPDATE cards SET discard=0 WHERE id='" + id + "'");
if (rows == 1) {
response.sendRedirect("recycle.jsp");
} else {
out.println("名片还原失败!
");
}
stmt.close();
conn.close();
%>
在该页面中,根据用户选择的操作,构造UPDATE语句将名片从回收站中还原,并在成功还原后重定向到回收站管理页面recycle.jsp。
彻底删除名片的功能在delete.jsp页面中已经实现,当用户选择彻底删除时,将直接调用DELETE语句删除名片信息。