JSP简单分析:用户登录(一)

以下是简单的分析jsp如何进行用户登录,代码有省略如需要导入的包,默认可以直接使用。项目名称设为test。

这里采用了MVC架构,简单说明下我对MVC以及项目中各个分层的理解(不全面,说到哪儿算哪儿)。M=Model,model这个东西呢主要是将数据库里的表映射成一个实体,字段就是它们的属性,就是我们说的JavaBean,这样程序可以直接对这个对象进行操作,一般我们会在src文件夹里建一个com.test.model,里面的存放这些映射的实体类,主要由属性和get/set方法构成。

我们还会看到service层,这个层主要是调用select、update、delete、save等方法实现对对象数据的操作。

util层主要是工具类,一般把常用的例如连接数据库的操作放在这里。

下面来分析下用户登录的基本思路:

建立数据库——映射实体类——用户输入用户名密码——接收用户名密码——在数据库中进行匹配——返回结果

一、建立数据库

数据库建立过程忽略,主要建立一个usertable表,里面有name和pwd两个字段。然后在DBUtil内写好数据库连接类以便后期需要连接数据库时使用。

com.test.util
public class DBUtil{
	public connection getConnection(){//获取连接方法,返回connection连接
		try{
			class.forName("com.mysql.jdbc.Driver");//加载驱动
			String URL=jdbc:mysql://172.20.5.201:3306/testdb;//数据库地址
			String USER="root";//用户名
			String PWD="password";//密码
			Connection conn=DriverManager.getConnection(URL,USER,PWD);//获取连接
		}catch(Exception e){
			e.printStackTrace();
		}
		return conn
}

二、映射实体类

根据usertable表建立这个实体类,属性对应字段,主要为get/set方法,程序可以通过这个类操作数据库;该类放在model层。

com.test.model
class UserTable{//与数据库的usertable表相对应
	private String name;//对应name字段
	private String password;//对应pwd字段
	public void setName(String name){//set方法
		this.name=name;
	}
	public String getName(){//get方法
		return name;
	}
	public void setPassword(String password){
		this.password=password;
	}
	public String getPassword(){
		return password;
	}
}

三、用户输入用户名密码

用户的输入功能主要在jsp呈现,这里创建一个login.jsp,上面放用户名和密码的输入框。

<link rel="stylesheet" type="text/css" href="style.css">//href表示引用的css路径
<form action="varify.jsp" name="login" method="post">//action表示跳转到处理页面,name是表单名称,method是请求方式
	<input type="text" name="user">//根据name值获取input的value
	<input type="password" name="password">//根据name值获取input的value
	<input type="submit">//提交按钮
</form>

form表单的action表示用户填写的用户名密码将跳转到varify.jsp页面处理,method指传送的方式,网上有很多post和get的不同之处的详解,这边只浅显的介绍下:1)get用于获取数据,post用于提交数据;2) get参数有长度限制,post无限制。

四、接收用户名密码

我们用varify.jsp来处理接收的用户名和密码。首先要先接收,然后根据这个用户名和密码去数据库匹配,最后返回结果。在这个页面我们使用了jsp:useBean和jsp:setProperty;jsp:useBean是一个JSP动作指令,表示装载一个将在JSP页面中使用的JavaBean,jsp:setProperty是为已经实例化的JavaBean的属性赋值。

<jsp:useBean id="user" class="com.test.model.userTable"></jsp:useBean>//id表示useBean的唯一标识,class表示bean的路径
<jsp:useBean id="userservice" class="com.test.service.UserService"></jsp:useBean>
<jsp:setProperty property="*" name="user">//*表示传递的所有参数,name是复制的javaBean
<%//处理逻辑
	if(userservice.verify(user)){
		out.print("success");
	}else{
		out.print("error");
	}
%>

这段程序中,我们先声明该jsp页面使用的javaBean是user(指定是上面model的实体类),然后通过setProperty为这个javaBean的所有属性赋值。我们再写一个处理类来处理接收到用户名密码到数据库进行匹配。

五、数据库匹配

我们把这个业务处理写在service层。varify.jsp调用UserService这个javaBean,然后调用其verify方法去数据库验证。

com.test.service
class UserService{
	private Connection conn;
	private PreparedStatement ps;
	pulic UserService(){
		conn=new DBUtil.getConnection();//获取连接
	}
	public boolean verify(UserTable user){
		try{
			sql="select * from usertable where name=? and pwd=?";//SQL语句
			ps=conn.PreparedStatement(sql);
			ps.setString(1,user.getName);//填补sql语句中的第一个?
			ps.setString(2,user.getPassword);//填补sql语句中的第二个?
			ResultSet rs=ps.executeQuery();//执行sql语句
			if(rs.next()){
				return true;
			}else{
				return false;
			}
		}catch(SQLException e){
			e.printStackTrace();
			return false;
		}
	}
} 

六、返回结果

varify.jsp页面使用java代码写根据数据库返回的结果进行的操作,如果数据库匹配成功,就在页面显示success;反之显示error。





猜你喜欢

转载自blog.csdn.net/aliyacl/article/details/80432288