要创建学生数据库及相关表,并开发一个简单的Java Web应用程序用于提交和查询学生成绩,您可以按照以下步骤进行:
### 第一步:设置数据库
1. **创建数据库**
CREATE DATABASE student;
USE student;
2. **创建学生信息表 `message`**
CREATE TABLE message (
sno INT PRIMARY KEY,
sname VARCHAR(100),
birthday DATE,
major VARCHAR(100)
);
3. **创建成绩表 `score`**
CREATE TABLE score (
sno INT,
cno INT,
cname VARCHAR(100),
sscore FLOAT,
PRIMARY KEY (sno, cno)
);
4. **插入示例数据**
INSERT INTO message (sno, sname, birthday, major) VALUES
(1, 'Alice', '2000-01-01', 'Computer Science'),
(2, 'Bob', '1999-05-15', 'Mathematics');
INSERT INTO score (sno, cno, cname, sscore) VALUES
(1, 101, 'Java', 85.5),
(1, 102, 'Database', 90.0),
(2, 101, 'Java', 88.0),
(2, 103, 'Calculus', 92.5);
### 第二步:创建Java Web项目
1. **项目结构**
- 创建一个Java Web项目,使用Servlet来处理表单提交和查询。
- 需要使用JSP来创建表单和显示结果。
2. **添加依赖**
- 确保项目中配置了连接MySQL数据库的JDBC驱动。
3. **实现表单提交**
- 创建 `index.jsp` 文件,用于输入学生成绩。
<form action="SubmitScoreServlet" method="post">
Student No: <input type="text" name="sno"><br>
Course No: <input type="text" name="cno"><br>
Course Name: <input type="text" name="cname"><br>
Score: <input type="text" name="sscore"><br>
<input type="submit" value="Submit Score">
</form>
4. **处理表单提交的 Servlet**
- 创建 `SubmitScoreServlet` 用于处理表单提交。
import java.io.IOException;
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.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
@WebServlet("/SubmitScoreServlet")
public class SubmitScoreServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sno = request.getParameter("sno");
String cno = request.getParameter("cno");
String cname = request.getParameter("cname");
String sscore = request.getParameter("sscore");
try {
// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password"); // 请使用您的数据库用户名和密码
PreparedStatement ps = conn.prepareStatement("INSERT INTO score (sno, cno, cname, sscore) VALUES (?, ?, ?, ?)");
ps.setInt(1, Integer.parseInt(sno));
ps.setInt(2, Integer.parseInt(cno));
ps.setString(3, cname);
ps.setFloat(4, Float.parseFloat(sscore));
ps.executeUpdate();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
response.sendRedirect("ShowScoresServlet");
}
}
5. **查询成绩的Servlet**
- 创建 `ShowScoresServlet` 用于查询和展示所有学生的成绩。
import java.io.IOException;
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.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
@WebServlet("/ShowScoresServlet")
public class ShowScoresServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password");
Statement stmt = conn.createStatement();
String sql = "SELECT m.sno, m.sname, s.cname, s.sscore FROM message m JOIN score s ON m.sno = s.sno";
ResultSet rs = stmt.executeQuery(sql);
out.println("<table border='1'><tr><th>Student No</th><th>Name</th><th>Course</th><th>Score</th></tr>");
while (rs.next()) {
out.println("<tr><td>" + rs.getInt("sno") + "</td><td>" + rs.getString("sname") + "</td><td>" +
rs.getString("cname") + "</td><td>" + rs.getFloat("sscore") + "</td></tr>");
}
out.println("</table>");
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
6. **部署并运行**
- 将项目部署到支持Java Web的应用服务器(如Apache Tomcat)。
- 访问 `index.jsp` 页面,输入学生成绩并提交,查看提交和查询是否正确显示。
以上步骤可以帮助您创建并运行一个简单的Java Web应用程序来管理学生成绩。如果有其他问题,请随时问我!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |