JavaWeb老年人系统
创建项目:打开 IntelliJ IDEA,选择 File -> New -> Project,选择 Maven 项目,勾选 Create from archetype 并选择 org.apache.maven.archetypes:maven-archetype-webapp,点击 Next 完成项目创建。
xml:
配置 Tomcat:在 IDEA 中配置 Tomcat 服务器,选择 Run -> Edit Configurations,添加一个新的 Tomcat Server,配置 Deployment 选项,将项目部署到 Tomcat 中。
数据库设计
创建一个名为 elderly_assessment 的数据库,并创建以下两张表:
sql
-- 老年人信息表
CREATE TABLE elderly (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL,
name VARCHAR(50) NOT NULL,
age INT,
gender VARCHAR(10)
);
-- 老年人能力评估表
CREATE TABLE assessment (
id INT AUTO_INCREMENT PRIMARY KEY,
elderly_id INT NOT NULL,
assessment_date DATE NOT NULL,
ability_score INT,
FOREIGN KEY (elderly_id) REFERENCES elderly(id)
);
后端代码实现
- 数据库连接工具类(DBUtils.java)
java
import org.apache.commons.dbcp.BasicDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DBUtils {
private static BasicDataSource dataSource;
static {
dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/elderly_assessment?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("your_password");
dataSource.setInitialSize(5);
dataSource.setMaxActive(10);
}
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
2. 实体类(Elderly.java 和 Assessment.java)
java
// Elderly.java
public class Elderly {
private int id;
private String username;
private String password;
private String name;
private int age;
private String gender;
// 构造方法、Getter 和 Setter 方法
public Elderly() {}
public Elderly(String username, String password, String name, int age, String gender) {
this.username = username;
this.password = password;
this.name = name;
this.age = age;
this.gender = gender;
}
// Getter 和 Setter 方法省略
}
// Assessment.java
public class Assessment {
private int id;
private int elderlyId;
private java.sql.Date assessmentDate;
private int abilityScore;
// 构造方法、Getter 和 Setter 方法
public Assessment() {}
public Assessment(int elderlyId, java.sql.Date assessmentDate, int abilityScore) {
this.elderlyId = elderlyId;
this.assessmentDate = assessmentDate;
this.abilityScore = abilityScore;
}
// Getter 和 Setter 方法省略
}
3. 数据访问对象(ElderlyDAO.java 和 AssessmentDAO.java)
java
// ElderlyDAO.java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ElderlyDAO {
public void register(Elderly elderly) {
String sql = "INSERT INTO elderly (username, password, name, age, gender) VALUES (?,?,?,?,?)";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, elderly.getUsername());
pstmt.setString(2, elderly.getPassword());
pstmt.setString(3, elderly.getName());
pstmt.setInt(4, elderly.getAge());
pstmt.setString(5, elderly.getGender());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Elderly login(String username, String password) {
String sql = "SELECT * FROM elderly WHERE username = ? AND password = ?";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
Elderly elderly = new Elderly();
elderly.setId(rs.getInt("id"));
elderly.setUsername(rs.getString("username"));
elderly.setPassword(rs.getString("password"));
elderly.setName(rs.getString("name"));
elderly.setAge(rs.getInt("age"));
elderly.setGender(rs.getString("gender"));
return elderly;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
// AssessmentDAO.java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class AssessmentDAO {
public void addAssessment(Assessment assessment) {
String sql = "INSERT INTO assessment (elderly_id, assessment_date, ability_score) VALUES (?,?,?)";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, assessment.getElderlyId());
pstmt.setDate(2, assessment.getAssessmentDate());
pstmt.setInt(3, assessment.getAbilityScore());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<Assessment> queryAssessments(int elderlyId, java.sql.Date startDate, java.sql.Date endDate) {
List<Assessment> assessments = new ArrayList<>();
String sql = "SELECT * FROM assessment WHERE elderly_id = ? AND assessment_date BETWEEN ? AND ?";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, elderlyId);
pstmt.setDate(2, startDate);
pstmt.setDate(3, endDate);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Assessment assessment = new Assessment();
assessment.setId(rs.getInt("id"));
assessment.setElderlyId(rs.getInt("elderly_id"));
assessment.setAssessmentDate(rs.getDate("assessment_date"));
assessment.setAbilityScore(rs.getInt("ability_score"));
assessments.add(assessment);
}
} catch (SQLException e) {
e.printStackTrace();
}
return assessments;
}
public double getAverageScore(int elderlyId) {
String sql = "SELECT AVG(ability_score) FROM assessment WHERE elderly_id = ?";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, elderlyId);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getDouble(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
public List<Assessment> getAllAssessments() {
List<Assessment> assessments = new ArrayList<>();
String sql = "SELECT * FROM assessment";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Assessment assessment = new Assessment();
assessment.setId(rs.getInt("id"));
assessment.setElderlyId(rs.getInt("elderly_id"));
assessment.setAssessmentDate(rs.getDate("assessment_date"));
assessment.setAbilityScore(rs.getInt("ability_score"));
assessments.add(assessment);
}
} catch (SQLException e) {
e.printStackTrace();
}
return assessments;
}
}
4. Servlet 实现
java
// RegisterServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
Elderly elderly = new Elderly(username, password, name, age, gender);
ElderlyDAO elderlyDAO = new ElderlyDAO();
elderlyDAO.register(elderly);
response.sendRedirect("login.jsp");
}
}
// LoginServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
ElderlyDAO elderlyDAO = new ElderlyDAO();
Elderly elderly = elderlyDAO.login(username, password);
if (elderly != null) {
HttpSession session = request.getSession();
session.setAttribute("elderly", elderly);
response.sendRedirect("index.jsp");
} else {
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
// AddAssessmentServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Date;
@WebServlet("/addAssessment")
public class AddAssessmentServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
Elderly elderly = (Elderly) session.getAttribute("elderly");
int elderlyId = elderly.getId();
String dateStr = request.getParameter("assessmentDate");
Date assessmentDate = Date.valueOf(dateStr);
int abilityScore = Integer.parseInt(request.getParameter("abilityScore"));
Assessment assessment = new Assessment(elderlyId, assessmentDate, abilityScore);
AssessmentDAO assessmentDAO = new AssessmentDAO();
assessmentDAO.addAssessment(assessment);
response.sendRedirect("index.jsp");
}
}
// QueryAssessmentServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Date;
import java.util.List;
@WebServlet("/queryAssessment")
public class QueryAssessmentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
Elderly elderly = (Elderly) session.getAttribute("elderly");
int elderlyId = elderly.getId();
String startDateStr = request.getParameter("startDate");
String endDateStr = request.getParameter("endDate");
Date startDate = Date.valueOf(startDateStr);
Date endDate = Date.valueOf(endDateStr);
AssessmentDAO assessmentDAO = new AssessmentDAO();
List<Assessment> assessments = assessmentDAO.queryAssessments(elderlyId, startDate, endDate);
request.setAttribute("assessments", assessments);
request.getRequestDispatcher("queryResult.jsp").forward(request, response);
}
}
// StatisticsServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/statistics")
public class StatisticsServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
Elderly elderly = (Elderly) session.getAttribute("elderly");
int elderlyId = elderly.getId();
AssessmentDAO assessmentDAO = new AssessmentDAO();
double averageScore = assessmentDAO.getAverageScore(elderlyId);
request.setAttribute("averageScore", averageScore);
request.getRequestDispatcher("statistics.jsp").forward(request, response);
}
}
// ExportServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
@WebServlet("/export")
public class ExportServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename=assessment_data.csv");
AssessmentDAO assessmentDAO = new AssessmentDAO();
List<Assessment> assessments = assessmentDAO.getAllAssessments();
PrintWriter writer = response.getWriter();
writer.println("ID,老年人 ID,评估日期,能力得分");
for (Assessment assessment : assessments) {
writer.println(assessment.getId() + "," + assessment.getElderlyId() + "," + assessment.getAssessmentDate() + "," + assessment.getAbilityScore());
}
writer.close();
}
}
前端页面实现
- 登录页面(login.jsp)
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
登录
注册${error}
2. 注册页面(register.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>注册
返回主页 5. 评估数据查询页面(queryAssessment.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>评估数据查询
返回主页 6. 评估数据查询结果页面(queryResult.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>评估数据查询结果
| ID | 老年人 ID | 评估日期 | 能力得分 |
|---|---|---|---|
| ${assessment.id} | ${assessment.elderlyId} | ${assessment.assessmentDate} | ${assessment.abilityScore} |
能力数据统计
平均得分:${averageScore}
返回主页 退出登录 Servlet(LogoutServlet.java) java import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("login.jsp");
}
}
项目总结:
通过以上步骤,我们完成了一个基于 JavaWeb 的老年人评估系统的开发,主要实现了以下功能:
老年人登录、注册:用户可以通过 login.jsp 页面登录系统,若没有账号可通过 register.jsp 页面进行注册。
老年人能力定期评估:登录后,用户可以在 addAssessment.jsp 页面输入评估日期和能力得分,提交评估信息。
能力评估数据多条件查询:用户可以在 queryAssessment.jsp 页面输入开始日期和结束日期,查询指定时间段内的评估数据,查询结果显示在 queryResult.jsp 页面。
能力数据统计:用户可以在主页点击 “查看数据统计” 链接,查看自己的平均能力得分,统计结果显示在 statistics.jsp 页面。
能力数据导出:用户可以在主页点击 “导出评估数据” 链接,将所有评估数据以 CSV 文件的形式导出。
浙公网安备 33010602011771号