Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3648236
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Java

2020-03-27 16:26:23

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语句,最后返回结果。

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

阅读(1931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~