JavaWeb数据库应用开发基础

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");
		}
}
原创文章 8 获赞 2 访问量 2334

猜你喜欢

转载自blog.csdn.net/flyroc08/article/details/105103552