學生成績查詢系統
歡迎瀏覽
你好!這一篇文章是爲了鞏固對前面知識,完成的練習。需要使用的知識:jsp,mysql,java
工具:c3p0數據庫連接器。
項目目錄
![項目目錄](https://img-blog.csdnimg.cn/20191028084007862.png
com.zz.action
package com.zz.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Action {
public void execute(HttpServletRequest request,HttpServletResponse response);
}
com.zz.action.student
QueryStudentInfoAction.java
package com.zz.action.student;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zz.action.Action;
import com.zz.dao.ScoreDao;
import com.zz.dao.StudentDao;
import com.zz.pojo.Score;
import com.zz.pojo.Student;
public class QueryStudentInfoAction implements Action {
private StudentDao studentDao;
private ScoreDao scoreDao;
public QueryStudentInfoAction() {
studentDao = new StudentDao();
scoreDao = new ScoreDao();
}
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
//下拉班級
ArrayList<Student> slist = studentDao.getKindOfClassname();
request.setAttribute("slist", slist);
if(!request.getParameter("subject").equals("")&&request.getParameter("name").equals("")&&request.getParameter("classname").equals("所有班級")) {
//按科目查找
String subject = request.getParameter("subject");
ArrayList<Score> list = scoreDao.getInfoBySub(subject);
HashMap<Integer,Student> map = new HashMap<Integer,Student>();
for (Score score: list) {
int sid = score.getSid();
Student student = studentDao.getStudentById(sid);
map.put(sid, student);
}
request.setAttribute("list", list);
request.setAttribute("map", map);
try {
request.getRequestDispatcher("/studentInfo.jsp").forward(request, response);
return;
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(request.getParameter("subject").equals("")&&!request.getParameter("name").equals("")&&request.getParameter("classname").equals("所有班級")) {
//按姓名查找
String name = request.getParameter("name");
int sid = studentDao.getIdByName(name);
ArrayList<Score> list = scoreDao.getScoreBySid(sid);
HashMap<Integer,Student> map = new HashMap<Integer,Student>();
for (Score score: list) {
int sdid = score.getSid();
Student student = studentDao.getStudentById(sdid);
map.put(sdid, student);
}
request.setAttribute("list", list);
request.setAttribute("map", map);
try {
request.getRequestDispatcher("/studentInfo.jsp").forward(request, response);
return;
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(request.getParameter("subject").equals("")&&request.getParameter("name").equals("")&&!request.getParameter("classname").equals("")) {
//按班級查找
String classname = request.getParameter("classname");
if(classname.equals("所有班級")) {
//查全部信息
try {
request.getRequestDispatcher("student-info.action").forward(request, response);
return;
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
ArrayList<Student> list = studentDao.getInfoByCname(classname);
int size = list.size()-1;
ArrayList<Score> scoreList = new ArrayList<Score>();
int a = 0;
for(a=0;a<=size;a++) {
int b = list.get(a).getId();
scoreList.addAll(scoreDao.getScoreBySid(b));
}
HashMap<Integer,Student> map = new HashMap<Integer,Student>();
for (Score score: scoreList) {
int sdid = score.getSid();
Student student = studentDao.getStudentById(sdid);
map.put(sdid, student);
}
request.setAttribute("list", scoreList);
request.setAttribute("map", map);
try {
request.getRequestDispatcher("/studentInfo.jsp").forward(request, response);
return;
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else if(!request.getParameter("subject").equals("")&&!request.getParameter("name").equals("")&&!request.getParameter("classname").equals("")) {
//多條件查找
if(request.getParameter("classname").equals("所有班級")) {
String subject = request.getParameter("subject");
String name = request.getParameter("name");
int sid = studentDao.getIdByName(name);
ArrayList<Score> list = scoreDao.getOnSidSubject(sid, subject);
HashMap<Integer,Student> map = new HashMap<Integer,Student>();
for (Score score: list) {
int id = score.getSid();
Student student = studentDao.getStudentById(id);
map.put(id, student);
}
request.setAttribute("list", list);
request.setAttribute("map", map);
try {
request.getRequestDispatcher("/studentInfo.jsp").forward(request, response);
return;
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
String subject = request.getParameter("subject");
String name = request.getParameter("name");
String classname = request.getParameter("classname");
int sid = studentDao.getIdOnNameCName(name, classname);
ArrayList<Score> list = scoreDao.getOnSidSubject(sid, subject);
HashMap<Integer,Student> map = new HashMap<Integer,Student>();
for (Score score: list) {
int id = score.getSid();
Student student = studentDao.getStudentById(id);
map.put(id, student);
}
request.setAttribute("list", list);
request.setAttribute("map", map);
try {
request.getRequestDispatcher("/studentInfo.jsp").forward(request, response);
return;
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
StudentInfoAction.java
package com.zz.action.student;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zz.action.Action;
import com.zz.dao.ScoreDao;
import com.zz.dao.StudentDao;
import com.zz.pojo.Score;
import com.zz.pojo.Student;
public class StudentInfoAction implements Action {
private StudentDao studentDao;
private ScoreDao scoreDao;
public StudentInfoAction() {
studentDao = new StudentDao();
scoreDao = new ScoreDao();
}
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
//下拉班級
ArrayList<Student> slist = studentDao.getKindOfClassname();
request.setAttribute("slist", slist);
//信息展示
ArrayList<Score> list = scoreDao.getScore();
HashMap<Integer,Student> map = new HashMap<Integer,Student>();
for (Score score: list) {
int sid = score.getSid();
Student student = studentDao.getStudentById(sid);
map.put(sid, student);
}
request.setAttribute("list", list);
request.setAttribute("map", map);
try {
request.getRequestDispatcher("/studentInfo.jsp").forward(request, response);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
com.zz.action.test
Test.java
package com.zz.action.test;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zz.action.Action;
public class Test implements Action{
public Test() {
}
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
}
}
com.zz.controller
package com.zz.controller;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zz.action.Action;
public class ActionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private Properties properties;
public void init() {
String file=Thread.currentThread().getContextClassLoader().getResource("config.properties").getFile();
properties=new Properties();
try {
properties.load(new FileInputStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String struri=request.getRequestURI();
struri=struri.substring(struri.lastIndexOf("/")+1);
String className=properties.getProperty(struri);
try {
Action action = (Action) Class.forName(className).newInstance();
action.execute(request,response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
com.zz.dao
ScoreDao.java
package com.zz.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.zz.pojo.Score;
import com.zz.util.C3P0Utils;
public class ScoreDao {
public ArrayList<Score> getScore() {
ArrayList<Score> list = new ArrayList<Score>();
Connection con = null;
Statement st = null;
ResultSet rs = null;
String sql = "select * from tbl_score";
try {
con = C3P0Utils.getConn();
st = con.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
Score score = new Score();
score.setId(rs.getInt("id"));
score.setSubject(rs.getString("subject"));
score.setScore(rs.getInt("score"));
score.setSid(rs.getInt("sid"));
list.add(score);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, st, rs);
}
return list;
}
public ArrayList<Score> getOnSidSubject(int sid,String subject) {
ArrayList<Score> list = new ArrayList<Score>();
Connection conn = C3P0Utils.getConn();
PreparedStatement psmt = null;
ResultSet rs = null;
try {
String sql = "select * from tbl_score where subject = ? and sid = ?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, subject);
psmt.setInt(2, sid);
// 執行
rs = psmt.executeQuery();
while (rs.next()) {
Score score = new Score();
score.setId(rs.getInt("id"));
score.setSubject(rs.getString("subject"));
score.setScore(rs.getInt("score"));
score.setSid(rs.getInt("sid"));
list.add(score);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(conn, psmt, rs);
}
return list;
}
public ArrayList<Score> getInfoBySub(String subject) {
ArrayList<Score> list = new ArrayList<Score>();
Connection conn = C3P0Utils.getConn();
PreparedStatement psmt = null;
ResultSet rs = null;
try {
String sql = "select * from tbl_score where subject = ?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, subject);
// 執行
rs = psmt.executeQuery();
while (rs.next()) {
Score score = new Score();
score.setId(rs.getInt("id"));
score.setSubject(rs.getString("subject"));
score.setScore(rs.getInt("score"));
score.setSid(rs.getInt("sid"));
list.add(score);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(conn, psmt, rs);
}
return list;
}
public Score getScoreById(int id) {
Connection con = null;
PreparedStatement psmt = null;
ResultSet rs = null;
Score score = null;
String sql = "select * from tbl_score where id=" + id;
try {
con = C3P0Utils.getConn();
psmt = con.prepareStatement(sql);
rs = psmt.executeQuery(sql);
while (rs.next()) {
int mid = rs.getInt("id");
String subject = rs.getString("subject");
int mscore = rs.getInt("score");
int sid = rs.getInt("sid");
// 創建 Score對象
score = new Score(mid, subject, mscore, sid);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, psmt, rs);
}
return score;
}
public ArrayList<Score> getScoreBySid(int sid) {
ArrayList<Score> list = new ArrayList<Score>();
Connection con = null;
PreparedStatement psmt = null;
ResultSet rs = null;
Score score = null;
String sql = "select * from tbl_score where sid = ?";
try {
con = C3P0Utils.getConn();
psmt = con.prepareStatement(sql);
psmt.setInt(1, sid);
rs = psmt.executeQuery();
while (rs.next()) {
int mid = rs.getInt("id");
String subject = rs.getString("subject");
int mscore = rs.getInt("score");
int sdid = rs.getInt("sid");
// 創建 Score對象
score = new Score(mid, subject, mscore, sdid);
list.add(score);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, psmt, rs);
}
return list;
}
public ArrayList<Score> getInfoByMoreSid(String msql) {
ArrayList<Score> list = new ArrayList<Score>();
Connection con = null;
PreparedStatement psmt = null;
ResultSet rs = null;
Score score = null;
String sql = "select * from tbl_score where ?";
try {
con = C3P0Utils.getConn();
psmt = con.prepareStatement(sql);
psmt.setString(1, msql);
rs = psmt.executeQuery();
while (rs.next()) {
int mid = rs.getInt("id");
String subject = rs.getString("subject");
int mscore = rs.getInt("score");
int sdid = rs.getInt("sid");
// 創建 Score對象
score = new Score(mid, subject, mscore, sdid);
list.add(score);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, psmt, rs);
}
return list;
}
}
StudentDao.java
package com.zz.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import com.zz.pojo.Student;
import com.zz.util.C3P0Utils;
public class StudentDao {
public ArrayList<Student> getStudent() {
ArrayList<Student> list = new ArrayList<Student>();
Connection con = null;
Statement st = null;
ResultSet rs = null;
String sql = "select * from tbl_student";
try {
con = C3P0Utils.getConn();
st = con.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setPhone(rs.getString("phone"));
student.setClassname(rs.getString("classname"));
System.out.println("shfisf");
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, st, rs);
}
return list;
}
public ArrayList<Student> getKindOfClassname() {
ArrayList<Student> list = new ArrayList<Student>();
Connection con = null;
Statement st = null;
ResultSet rs = null;
String sql = "select distinct classname from tbl_student";
try {
con = C3P0Utils.getConn();
st = con.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
Student student = new Student();
student.setClassname(rs.getString("classname"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, st, rs);
}
return list;
}
public ArrayList<Student> getInfoByCname(String classname) {
ArrayList<Student> list = new ArrayList<Student>();
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
String sql = "select * from tbl_student where classname=?";
try {
con = C3P0Utils.getConn();
st = con.prepareStatement(sql);
st.setString(1, classname);
rs = st.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setPhone(rs.getString("phone"));
student.setClassname(rs.getString("classname"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, st, rs);
}
return list;
}
public ArrayList<Student> getInfoByName(String name) {
ArrayList<Student> list = new ArrayList<Student>();
Connection conn = C3P0Utils.getConn();
PreparedStatement psmt = null;
ResultSet rs = null;
String sql = "select * from tbl_student where name=?";
try {
conn = C3P0Utils.getConn();
psmt = conn.prepareStatement(sql);
psmt.setString(1, name);
rs = psmt.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setPhone(rs.getString("phone"));
student.setClassname(rs.getString("classname"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(conn, psmt, rs);
}
return list;
}
public int getIdByName(String name) {
Connection conn = C3P0Utils.getConn();
PreparedStatement psmt = null;
ResultSet rs = null;
int sid = 0;
String sql = "select * from tbl_student where name=?";
try {
conn = C3P0Utils.getConn();
psmt = conn.prepareStatement(sql);
psmt.setString(1, name);
rs = psmt.executeQuery();
while (rs.next()) {
sid = rs.getInt("id");
return sid;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(conn, psmt, rs);
}
return sid;
}
public int getIdOnNameCName(String name,String classname) {
Connection conn = C3P0Utils.getConn();
PreparedStatement psmt = null;
ResultSet rs = null;
int sid = 0;
String sql = "select * from tbl_student where name = ? and classname = ?";
try {
conn = C3P0Utils.getConn();
psmt = conn.prepareStatement(sql);
psmt.setString(1, name);
psmt.setString(2, classname);
rs = psmt.executeQuery();
while (rs.next()) {
sid = rs.getInt("id");
return sid;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(conn, psmt, rs);
}
return sid;
}
public Student getStudentById(int id) {
Connection con = null;
PreparedStatement psmt = null;
ResultSet rs = null;
Student student = null;
String sql = "select * from tbl_student where id=" + id;
try {
con = C3P0Utils.getConn();
psmt = con.prepareStatement(sql);
rs = psmt.executeQuery(sql);
while (rs.next()) {
student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setPhone(rs.getString("phone"));
student.setClassname(rs.getString("classname"));
return student;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, psmt, rs);
}
return student;
}
public ArrayList<Student> getInfoListById(int id) {
ArrayList<Student> list = new ArrayList<Student>();
Connection con = null;
PreparedStatement psmt = null;
ResultSet rs = null;
Student student = null;
String sql = "select * from tbl_student where id=" + id;
try {
con = C3P0Utils.getConn();
psmt = con.prepareStatement(sql);
rs = psmt.executeQuery(sql);
while (rs.next()) {
student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setPhone(rs.getString("phone"));
student.setClassname(rs.getString("classname"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0Utils.closeJDBC(con, psmt, rs);
}
return list;
}
}
com.zz.pojo
Score.java
package com.zz.pojo;
import java.io.Serializable;
public class Score implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String subject;
private Integer score;
private Integer sid;
public Score() {
super();
}
public Score(String subject, Integer score, Integer sid) {
super();
this.subject = subject;
this.score = score;
this.sid = sid;
}
public Score(Integer id, String subject, Integer score, Integer sid) {
super();
this.id = id;
this.subject = subject;
this.score = score;
this.sid = sid;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
@Override
public String toString() {
return "Score [id=" + id + ", subject=" + subject + ", score=" + score + ", sid=" + sid + "]";
}
}
Student.java
package com.zz.pojo;
import java.io.Serializable;
public class Student implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String phone;
private String classname;
public Student() {
super();
}
public Student(String name, String phone, String classname) {
super();
this.name = name;
this.phone = phone;
this.classname = classname;
}
public Student(Integer id, String name, String phone, String classname) {
super();
this.id = id;
this.name = name;
this.phone = phone;
this.classname = classname;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", phone=" + phone + ", classname=" + classname + "]";
}
}
com.zz.util
C3P0Utils.java
package com.zz.util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3P0Utils {
static ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");
public static Connection getConn() {
try {
Connection conn = dataSource.getConnection();
return conn;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void closeJDBC(Connection con,Statement st,ResultSet rs) {
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if(con!=null && con.isClosed()==false) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
src
c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--默認配置 -->
<default-config>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config>
<!--配置連接池mysql -->
<named-config name="mysql">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</named-config>
</c3p0-config>
config.properties
#test
show-test.action=com.zz.action.test.Test
#info
student-info.action=com.zz.action.student.StudentInfoAction
#query
query-bysubject.action=com.zz.action.student.QueryInfoAction
#queryB
query-info.action=com.zz.action.student.QueryStudentInfoAction
db
tbl_score.sql
/*
MySQL Data Transfer
Source Host: localhost
Source Database: test
Target Host: localhost
Target Database: test
Date: 2019/10/13 19:38:22
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tbl_score
-- ----------------------------
DROP TABLE IF EXISTS `tbl_score`;
CREATE TABLE `tbl_score` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`subject` varchar(20) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
`sid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_sid` (`sid`),
CONSTRAINT `FK_sid` FOREIGN KEY (`sid`) REFERENCES `tbl_student` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for tbl_student
-- ----------------------------
DROP TABLE IF EXISTS `tbl_student`;
CREATE TABLE `tbl_student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`classname` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `tbl_score` VALUES ('1', 'Java基礎', '80', '1');
INSERT INTO `tbl_score` VALUES ('2', 'Java基礎', '60', '2');
INSERT INTO `tbl_score` VALUES ('3', 'Java基礎', '90', '3');
INSERT INTO `tbl_score` VALUES ('4', 'Java基礎', '70', '4');
INSERT INTO `tbl_score` VALUES ('5', 'Java基礎', '80', '5');
INSERT INTO `tbl_score` VALUES ('6', 'Oracle', '80', '1');
INSERT INTO `tbl_score` VALUES ('7', 'Oracle', '90', '2');
INSERT INTO `tbl_score` VALUES ('8', 'Oracle', '70', '3');
INSERT INTO `tbl_score` VALUES ('9', 'Oracle', '80', '4');
INSERT INTO `tbl_score` VALUES ('10', 'Oracle', '76', '5');
INSERT INTO `tbl_score` VALUES ('11', 'Spring', '50', '1');
INSERT INTO `tbl_score` VALUES ('12', 'Spring', '60', '2');
INSERT INTO `tbl_score` VALUES ('13', 'Spring', '60', '3');
INSERT INTO `tbl_score` VALUES ('14', 'Spring', '70', '4');
INSERT INTO `tbl_score` VALUES ('15', 'Spring', '80', '5');
INSERT INTO `tbl_student` VALUES ('1', 'Tom', '123456789', 'STA01');
INSERT INTO `tbl_student` VALUES ('2', 'Mary', '987654321', 'STA01');
INSERT INTO `tbl_student` VALUES ('3', 'Sam', '123456789', 'STA02');
INSERT INTO `tbl_student` VALUES ('4', 'Bill', '123456789', 'STA02');
INSERT INTO `tbl_student` VALUES ('5', 'Mary', '123456789', 'STA02');
lib
c3p0-0.9.1.2.jar
jstl.jar
mysql-connector-java-5.1.6-bin.jar
standard.jar
WEB-INF
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>StudentInfo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>ActionServlet</display-name>
<servlet-name>ActionServlet</servlet-name>
<servlet-class>com.zz.controller.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ActionServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
WebContent
NewFile.jsp
<%@ 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>
<a href="student-info.action">點擊1</a>
<br/>
</body>
</html>
studentInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>學生信息展示</title>
<style type="text/css">
body {
text-align: center;
font-size: 13px;
}
table {
border-collapse: collapse;
border:1px solid black;
align:center;
padding:0px;
width:550px;
margin: auto;
}
table, td, th {
border: 1px solid black;
}
</style>
</head>
<body>
<form action="query-info.action">
<label>科目:</label><input name="subject"/>
<label>姓名:</label><input name="name"/>
<label>班級:</label>
<select id="classname" name="classname" autofocus >
<option value="所有班級">所有班級</option>
<c:forEach items="${slist }" var="slist">
<option value="${slist.classname }">${slist.classname }</option>
</c:forEach></select>
<button class="submit" type="submit" name="query" value="true" tabindex="80">查詢</button>
</form>
<table>
<tr>
<td>編號</td>
<td>姓名</td>
<td>班級</td>
<td>科目</td>
<td>分數</td>
</tr>
<c:forEach items="${ list}" var="list">
<tr>
<td><c:out value="${list.id }"></c:out></td>
<td>${map[list.sid ].name}</td>
<td>${map[list.sid ].classname}</td>
<td><c:out value="${list.subject }"></c:out></td>
<td><c:out value="${list.score }"></c:out></td>
</tr>
</c:forEach>
</table>
</body>
</html>
效果圖
運行NewFile.jsp
查詢數據後展示
根據科目查詢例如:Oracle
根據姓名查詢例如:Tom
根據班級查詢例如:STA01
根據科目和姓名查詢例如:STA01
還有其他條件組合查詢