3-JSP+JDBC数据库应用开发初步(二)

一、JSP+Servlet+JDBC开发数据库应用

上一讲“JSP+JDBC数据库应用开发初步”中,我们给出了一个小例子,采用JSP页面来处理用户的登录请求。本讲中,我们将该JSP页面替换为Servlet来处理用户登录请求。
实验步骤如下:

  1. 用户登录页面仍然采用原来的login.jsp页面,只需要把form表单的action方法修改为Servlet的url即可,其它不变。
  2. 资源页面也仍然采用resource.jsp不变,注意:该页面需要读取session中保存的用户名,若存在,则说明用户登录成功,可以显示资源信息,否则重新跳转到登录页。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"  import="java.util.*"%>
<html>
 	<body>
 	<%
 	String username="";
 	username=(String)session.getAttribute("userName");
 	if(username!=null)
 		out.println("欢迎"+username+"访问网站资源"); 		
 	 else
 	 	response.sendRedirect("login.jsp");	
 	 %>
 	</body>
 </html>
  1. 新建servlets包,在该包内新建一个Servlet,命名为Handle,在自动生成的代码中导入如下几个包,用于访问数据库:
import javax.servlet.http.HttpSession;
import db.DBUtil;
import java.sql.SQLException;
  1. 修改doGet()方法,通过访问数据库来验证用户名和口令
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*---获取用户登录页面提交的用户名和密码---*/
		String username=request.getParameter("userName");
		String password=request.getParameter("passWord");
		
	    HttpSession session=request.getSession();
	    
		/*---定义jdbc数据库连接---*/
	    java.sql.Connection conn=null;
	    java.sql.PreparedStatement pre=null;
	    java.sql.ResultSet rs=null;
	    
		try{
			conn=DBUtil.getConnection();
     
		    /*---定义sql语句并设置参数---*/  
			String sql="select * from stu where username=? and password=?";
		    pre=conn.prepareStatement(sql);
		    pre.setString(1,username);
		    pre.setString(2,password);
    
		    /*---执行sql语句---*/
		   	rs=pre.executeQuery();
   	
		   	/*---根据查询结果进行登录跳转处理 ---*/
		   	if(rs.next()){
				session.setAttribute("userName", username);
				session.setAttribute("passWord", password);
				response.sendRedirect(request.getContextPath()+"/resource.jsp");
				
			}
			else{
				response.sendRedirect(request.getContextPath()+"/login.jsp");
			}

		} catch(Exception e){
			e.printStackTrace();
		} finally {
			/*---释放资源并关闭连接 ---*/
			if(rs!=null) {	
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(pre!=null) {	
				try {
					pre.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(conn!=null) {	
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		} 		
	}

二、JSP+Servlet+JDBC+JavaBean开发数据库应用

本例修改上文中的Servlet,在其验证用户登录信息后,创建一个JavaBean对象保存在Session中,代替上例中的username和password两个字符串,这样可以通过JavaBean在页面间实现值的传递。

  1. 首先要在entity包中创建一个JavaBean,本例命名为Stu
  2. 在Servlet中导入该Stu类
import entity.Stu;
  1. 修改doGet()方法代码,创建Stu对象stu,调用set方法设置属性值,然后保存在session中,如下:
//省略部分代码
		   	/*---根据查询结果进行登录跳转处理 ---*/
		   	if(rs.next()){
		   		/*---创建Stu对象,命名为stu,并设置属性值 ---*/
		   		Stu stu=new Stu();
		   		stu.setUsername(username);
		   		stu.setPassword(password);
		   		session.setAttribute("stu", stu);
				response.sendRedirect(request.getContextPath()+"/resource.jsp");				
			}
			else{
				response.sendRedirect(request.getContextPath()+"/login.jsp");
			}
//省略部分代码
  1. 同时,resource.jsp文件也要进行相应修改,利用page指令导入Stu类,并且在Session中读取Servlet保存的stu对象。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"  import="java.util.*"%>
<%@ page import="entity.Stu" %>
 <html>
 	<body>
 	<%
 	Stu stu=(Stu)session.getAttribute("stu");
 	if(stu!=null)
 		out.println("欢迎"+stu.getUsername()+"访问网站资源!<Br>"+"您的登录密码是:"+stu.getPassword());
 	 else
 	 	response.sendRedirect("login.jsp");	
 	 %>
 	</body>
 </html>

三、如何添加数据

前面的例子介绍了通过JDBC查询数据库,那么如何向数据库添加数据呢?其实主要程序结构是一样的。

  1. 新建前端页面,用户可以输入要添加的数据。
  2. 新建后端处理页面或者Servlet,接收用户提交的数据,通过JDBC连接访问数据库,执行添加数据的sql语句,如下:
	String sql="insert into stu(username,password) values(?,?)";
	pre=conn.prepareStatement(sql);
	pre.setString(1, username);
	pre.setString(2, password);
	rows=pre.executeUpdate();

此例中,首先定义了sql语句:数据表为stu,添加一条记录,给数据表的username、password字段分别赋值(此处的username和password是数据库stu表中的字段名),取值用占位符“?”代替;
然后,调用setString方法分别设置两个占位符代表的参数值赋值,取值之前已经通过获取用户提交的数据保存在两个字符串变量username和password中(注意,此处的username和password是变量名,不是数据库字段名);
最后,执行executeUpdate操作,返回值赋值给整型变量rows,大于零表示添加成功的记录数,等于零表示未添加成功。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值