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"); } }