JavaWeb数据库应用
JavaWeb数据库应用开发的几种方式
一、JSP+JDBC
二、JSP+Servlet(+JDBC)
三、JSP+Servlet+DAO(+JDBC)
四、JSP+Servlet+DAO(+JDBC)+JavaBean
JavaWeb数据库应用开发的几种方式
以下总结了课程中学习的四种JavaWeb数据库应用开发方式,其中第前两种适合业务逻辑和功能简单的系统;后两种则是经典的MVC开发模式,推荐大家主要采用这种方式。此外,在有一定基础后可以学习使用主流开发框架,如Spring等,开发企业级应用。

一、JSP+JDBC
1.新建前端JSP页面,通过表单或超链接方式提交请求及参数到后端JSP页面。
2.新建后端JSP页面,导入JDBC相关包和类,连接数据库并接收前端请求参数,执行sql语句,最后输出结果并进行响应。
实验:参见实验db_ex1.jsp至db_ex5.jsp

二、JSP+Servlet(+JDBC)
1.新建前端JSP页面,通过表单或超链接方式提交请求及参数到servlet的URL(注意,servlet的URL地址可以进行配置)。
2.新建Servlet类,并配置URL映射。导入JDBC相关包和类,连接数据库并接收前端请求参数,执行sql语句,最后输出结果并进行响应。(注意,Servlet可以通过session或request对象的setAttribute方法将数据保存为属性,来向响应页面传递输出的结果。)
3.响应页面从sessionScope或requestScope对象中取出保存的属性数据,在页面中显示。

实验:Servlet LoginHandle.java的doGet方法主要代码如下

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = "";
String password = "";
HttpSession session = request.getSession();//需要import javax.servlet.http.HttpSession类
request.setCharacterEncoding("UTF-8");
username = request.getParameter("userName");
password = request.getParameter("passWord");
java.sql.Connection conn=null;
java.sql.PreparedStatement pre=null;
java.sql.ResultSet rs=null;

try{
conn=DBUtil.getConnection();
String sql="select * from stu where username=? and password=?";
pre=conn.prepareStatement(sql);
pre.setString(1, username);
pre.setString(2, password);
rs=pre.executeQuery();
if(rs.next()){
session.setAttribute("userName", username);
response.sendRedirect(request.getContextPath()+"/stu/notice.jsp");
}else{
response.sendRedirect(request.getContextPath()+"/index.jsp");
}

}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(pre!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

三、JSP+Servlet+DAO(+JDBC)
1.新建前端JSP页面,通过表单或超链接方式提交请求及参数到servlet的URL(注意,servlet的URL地址可以进行配置)。
2.新建DAO类,导入JDBC相关包和类,新建数据库访问方法,连接数据库并执行sql语句,最后返回结果。
MT5教程专题 http://www.gendan5.com/mt5.html
3.新建Servlet类,并配置URL映射。导入DAO类,接收前端请求参数,调用DAO类的数据库访问方法,获取结果并进行响应。(注意,Servlet可以通过session或request对象的setAttribute方法将数据保存为属性,来向响应页面传递数据。)
4.响应页面从sessionScope或requestScope对象中取出保存的属性数据,在页面中显示。

实验:DAO类StuDao.java的主要代码如下:

package dao;
import com.mysql.jdbc.;
import java.sql.
;

import db.DBUtil;

public class StuDao {
public String validateLogin(String username,String password){
String stu="";
java.sql.Connection conn=null;
java.sql.PreparedStatement pre=null;
java.sql.ResultSet rs=null;

try{
conn=DBUtil.getConnection();
String sql="select * from stu where username=? and password=?";
pre=conn.prepareStatement(sql);
pre.setString(1, username);
pre.setString(2, password);
rs=pre.executeQuery();
if(rs.next()){
stu=username;
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(pre!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return stu;
}
}

Servlet LoginHandle.java的doGet方法主要代码如下

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = "";
String password = "";
HttpSession session = request.getSession();//需要import javax.servlet.http.HttpSession类
username = request.getParameter("userName");
password = request.getParameter("passWord");
StuDao studao=new StuDao();
String uname=studao.validateLogin(username, password);
if(uname!=""){
session.setAttribute("userName", username);
response.sendRedirect(request.getContextPath()+"/stu/notice.jsp");
}else{
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
}

四、JSP+Servlet+DAO(+JDBC)+JavaBean
1.新建前端JSP页面,通过表单或超链接方式提交请求及参数到servlet的URL(注意,servlet的URL地址可以进行配置)。
2.新建JavaBean类(对应E-R模型和数据库表)。
3.新建DAO类,导入JDBC相关包和类,新建数据库访问方法,连接数据库并执行sql语句。如果进行实体的查询,可以导入JavaBean类,并将查询结果保存在JavaBean中,最后将JavaBean返回。
3.新建Servlet类,并配置URL映射。导入DAO类和JavaBean类,接收前端请求参数,调用DAO类的数据库访问方法,获取结果(或JavaBean)并进行响应。(注意,Servlet可以通过session或request对象的setAttribute方法将JavaBean保存为属性,来向响应页面传递数据。)
4.响应页面从sessionScope或requestScope对象中取出保存的JavaBean数据,在页面中显示。

实验:JavaBean类Stu.java的主要代码如下:

package entity;

public class Stu {
private int userid;
private String username;
private String password;
private String regip;
private String regtime;
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRegip() {
return regip;
}
public void setRegip(String regip) {
this.regip = regip;
}
public String getRegtime() {
return regtime;
}
public void setRegtime(String regtime) {
this.regtime = regtime;
}

}

DAO类StuDao.java的主要代码如下:

package dao;
import com.mysql.jdbc.;
import java.sql.
;

import db.DBUtil;
import entity.Stu;

public class StuDao {
public Stu validateLogin(String username,String password){
Stu stu=new Stu();
java.sql.Connection conn=null;
java.sql.PreparedStatement pre=null;
java.sql.ResultSet rs=null;

try{
conn=DBUtil.getConnection();
String sql="select * from stu where username=? and password=?";
pre=conn.prepareStatement(sql);
pre.setString(1, username);
pre.setString(2, password);
rs=pre.executeQuery();
if(rs.next()){
stu.setUserid(rs.getInt("userid"));
stu.setUsername(rs.getString("username"));
stu.setPassword(rs.getString("password"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(pre!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return stu;
}
}

Servlet LoginHandle.java的doGet方法主要代码如下

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = "";
String password = "";
HttpSession session = request.getSession();//需要import javax.servlet.http.HttpSession类
username = request.getParameter("userName");
password = request.getParameter("passWord");
StuDao studao=new StuDao();
Stu stu=studao.validateLogin(username, password);
if(stu.getUsername!=null){
session.setAttribute("stu", stu);
response.sendRedirect(request.getContextPath()+"/stu/notice.jsp");
}else{
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
}