项目要求:
1、创建一web工程,新建两个jsp文件,分别为成绩查询输入页面 queryscore.jsp 和查询结果显示页面result.jsp 。
2、新建JavaBean,名称为StuScore.java,属性有no(学号)、 name(姓名)、 ds(数据结构成绩)、 db(数据库原理成绩)、 java(java程序成绩)、web(web技术成绩);还有处理查询逻辑的方法 getScores()。
处理流程如下:
用户成绩查询页面输入学号,提交请求给result.jsp页面,在result.jsp中创建JavaBean并调用getScores()方法,将查询到的成绩以表格形式显示,若没有查询到成绩,给出提示信息(成绩数据保存在数据库中)
界面如下:
项目需要:2个jsp文件和2个java文件
项目结构:
StuScore.java
package com.Dto;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.util.DButil;
public class StuScore {
String No;
String Name;
int Ds;
int Db;
int Java;
int Web;
public String getNo() {
return No;
}
public void setNo(String no) {
No = no;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getDs() {
return Ds;
}
public void setDs(int ds) {
Ds = ds;
}
public int getDb() {
return Db;
}
public void setDb(int db) {
Db = db;
}
public int getJava() {
return Java;
}
public void setJava(int java) {
Java = java;
}
public int getWeb() {
return Web;
}
public void setWeb(int web) {
Web = web;
}
public void getScores(String sno) throws IOException{
DButil db = new DButil();//初始化工具类
String sql = "select * from stu_score where no = ?";//封装sql语句,这边的‘stu_score’要和数据库中的表 同名
//1、连接到数据库
Connection connection = db.getConnection();
try {
//2、执行SQL查询
PreparedStatement pst = connection.prepareStatement(sql);
pst.setString(1, sno);
//3、把查询结果放到结果集
ResultSet rs = pst.executeQuery();
if (rs.next()) {
String user_no=rs.getString(1);
String user_name=rs.getString(2);
int user_ds=rs.getInt(3);
int user_db=rs.getInt(4);
int user_java=rs.getInt(5);
int user_web=rs.getInt(6);
this.No=user_no;
this.Name=user_name;
this.Ds=user_ds;
this.Db=user_db;
this.Java=user_java;
this.Web=user_web;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//4、断开数据库连接
db.closeConnection(connection);//放到finally中,无论是否抛出异常,最后都会执行该语句
}
}
}
DButil.java
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* util工具类
* @author yangchaoyi
*
*/
public class DButil {
//1、执行静态方法,加载数据库驱动
static {
try {
System.out.println("正在加载数据库驱动...");
System.out.println("Class.forName('oracle.jdbc.driver.OracleDriver');");
Class.forName("oracle.jdbc.driver.OracleDriver");//这边参数的意义,url:jdbc数据库网址 user:用户名(String类型) password:密码(String类型)[这边的数据库密码和用户名填写自己的]。同样由于getConnection方法会抛出SQLException,要使用try-catch
System.out.println("已加载数据库驱动!!!\n");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//2、创建数据库连接的方法
public Connection getConnection() {
Connection connection;
try {
System.out.println("正在连接到数据库...");
System.out.println("connection = DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:orcl', 'scott', 'ycy');");
connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "ycy");///这边参数的意义,url:jdbc数据库网址 user:用户名 password:密码。同样由于getConnection方法会抛出SQLException,要使用try-catch
System.out.println("已连接到scott数据库!!!\n");
return connection;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//3、关闭数据库连接,释放JDBC资源的方法
public void closeConnection(Connection connection) {
if (connection != null) {
try {
System.out.println("准备释放jdbc资源,断开数据库连接...");
System.out.println("connection.close();");
connection.close();//立即释放jdbc资源,而不是等自动释放
System.out.println("已断开数据库连接并且释放了jdbc资源\n");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
queryscore.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>成绩查询</title>
</head>
<body>
<center>
<font size="5" face="隶书" color="blue">成绩查询系统 </font>
<hr>
<form action="result.jsp" method="post">
输入学号:<input type=text name="stuno" size=12 maxlength=20><input type=submit name="提交按钮" value="确定">
</form>
</center>
</body>
</html>
result.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="com.Dto.StuScore" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>查询结果</title>
</head>
<body>
<center>
<% String no=request.getParameter("stuno");%>
<jsp:useBean id="stu" scope="page" class="com.Dto.StuScore"></jsp:useBean>
<jsp:setProperty name="stu" property="no" value="<%=no %>"/>
<% stu.getScores(no); %>
<%if(stu.getName()!=null)
{%>
<font size="5" face="隶书" color="blue">查询结果</font>
<hr>
<table border=2>
<tr>
<td>学号</td><td>姓名</td><td>数据结构</td><td>数据库原理</td><td>java程序设计</td><td>web技术基础</td>
<tr>
<tr>
<td><%=stu.getNo() %></td><td><%=stu.getName() %></td><td><%=stu.getDs() %></td><td><%=stu.getDb() %></td><td><%=stu.getJava() %></td><td><%=stu.getWeb() %></td>
<tr>
</table>
<%} else{
%>
系统中没有查询到学号:<%=no %>的成绩
<%} %>
</center>
</body>
</html>
Oracle 代码
create table stu_score
(
no varchar2(20),
name varchar2(20),
ds number(4),
db number(4),
java number(4),
web number(4)
);
insert into stu_score
values('20170101', '张无忌', 98,98,98,99);
insert into stu_score
values('20170102', '赵敏', 92,91,93,99);
select * from stu_score;
学如逆水行舟,不进则退