基于jsp+servlet+javabean开发的登录模块

本文总结了基于jsp、servlet和javabean开发登录模块时遇到的问题与难点,包括Userdao.java中查询方法的返回值处理、<jsp:usebean>标签的使用、页面跳转方式,以及此开发模式的缺点。提出了将业务处理移到servlet,重复代码处理放在javabean的改进方案。

之前写的三篇文章,自己看了感觉没有排版好,看着比较乱,不能提供 一个清晰的思路,以后注意。

        上一篇我们学习了基于jsp+javabean开发的登录模块,现在总结一下开发中的问题及难点,还有这种开发模式的缺点。

一、开发中的问题及难点:

        1、在Userdao.java类中,封装了一个查询的方法select(String sql),针对方法的 返回值不知道该使用什么类型,最后确定返回一个ResultSet,在logincheck.jsp中拿到返回结果,进行判断。

        2、关于<jsp:usebean></jsp:usebean>的使用,只有当User.java中的属性名和页面传过来的参数名一样的时候,才可以 使用<jsp:setPropertity name="" property="*"/>自动赋值。

        3、页面跳转的问题:几种页面跳转方式:RequestDispatcher.forward()、response.sendRedirect()客户端跳转,地址栏改变、<jsp:forward  page="">服务器端跳转,地址栏不改变。

二、开发模式的缺点:jsp主要是进行页面显示,在jsp中放一些 java代码进行业务处理,不利于维护。

三、改进方法:把业务处理放到servlet,大量重复代码写在javabean中。

四、基于jsp+servlet+javabean开发的登录模块:

使用这种模式,就不需要建立logincheck.jsp文件了。WebRoot目录下只需要login.jsp、success.jsp、false.jsp。

src下目录结构:

User.java中代码:

package testservlet;

public class User {
	private String name;
	private String password;
	
	public User(){}
	public User(String name,String password){
		this.name = name;
		this.password = password;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}


ConUtil.java中的代码:

package util;

import java.sql.*;

public class ConUtil {
	private String driver = "com.mysql.jdbc.Driver";
	private String url = "jdbc:mysql://127.0.0.1:3306/test";
	private String dbuser = "root";
	private String dbpass = "Admin123";
	private Connection con = null;
			
	public Connection getCon(){
		
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(url,dbuser,dbpass);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return con;
	}
	
	public void  closecon(){
		if(con!=null)
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}
}


UserDao.java中的代码:

package dao;

import testservlet.User;
import util.ConUtil;

import java.sql.*;

public class UserDao {
	
	public User login(Connection con,User user){
		User respuser = null;
		String sql = "select * from t_user where mame=? and password=?";
		try {
			PreparedStatement ps = con.prepareStatement(sql);
			ps.setString(1, user.getName());
			ps.setString(2,user.getPassword());
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				respuser = new User();
				respuser.setName(user.getName());
				respuser.setPassword(user.getPassword());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return respuser;
	}
}


ServletDao.java中的代码:

package service;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import dao.UserDao;
import testservlet.User;
import util.ConUtil;

public class ServletDao extends HttpServlet {

	ConUtil con = new ConUtil();
	UserDao ud = new UserDao();
	
	public ServletDao() {
		super();
	}

	public void destroy() {
		super.destroy(); 
	}


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name = (String)request.getParameter("name");
		String pass = (String)request.getParameter("password");
		Connection conn = null;			
		conn = con.getCon();
		User u = new User(name,pass);
		User uu = ud.login(conn, u);
		if(uu!=null){		
			HttpSession session = request.getSession();
			session.setAttribute("name",name);
			response.sendRedirect("success.jsp");
		}else{
			response.sendRedirect("false.jsp");
		}
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

	public void init() throws ServletException {
		
	}

}

运行结果:


OK!


评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值