JavaWeb实现登录与注册的功能(一)

登录与注册算是学习javaweb中首先遇到的问题。自学这一块的时候遇到了不少麻烦,虽然网上有许多的博客对这两块进行了介绍,但是由于应用软件的不同和其它的问题,确实是走了不少的弯路。现在对这两个功能进行下回顾,一方面对学习过的内容加深下理解,另一方面也希望能够帮助下初步涉及这一块的童鞋。
无论登录与注册,都是将输入的信息与数据库中的信息进行对比,只不过登录是与数据库中的信息对比之后,如果相同,则登录成功。而注册则是如果数据库中如果不存在该信息,则注册成功。
之后也会通过三层架构的方式实现登录与注册
登录
首先,应当先实现myeclipse与数据库的连接。工具用到连接数据库所需要的jar包。软件:myeclipse+SQL server 2008。
我们先实现与数据库的连接并读取数据库中的内容。

package jdbcTest;

public class jdbc {
	  public static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
	  public static String dbURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=project";
	 
	  public static String userName="sa";
	  public static String userPwd="123";
}

其中,这里面的driverName和dbURL并不是所有的软件都是这么使用,
DatabaseName是数据库名字,userName为用户名,userPwd则是用户密码。
测试,与数据库的连接是否成功以及能否读出数据库中的内容

package jdbcTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test extends jdbc{
	  
	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		try {
			Class.forName(driverName);//加载驱动程序类,DriverManger将注册加载的类实例
			Connection conn=DriverManager.getConnection(dbURL, userName, userPwd);//获取链接
			Statement state=conn.createStatement();
			ResultSet rs=state.executeQuery("select * from [user]");//查询
			System.out.println("username\tpassword\temail\tsex");
			
			while(rs.next()){
				for (int i = 1;i<=4; i++) {
					System.out.print((i>1 ? "\t" :"")+rs.getString(i));
				}
				System.out.println("");
				
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

查询语句中的user为表名。在查询时,遇到了个问题:如果只写表名user,运行代码之后会报错: 关键字 ‘user’ 附近有语法错误。修改为[user]后则不报错。具体是user还是[user],还是需要结合自己的实际情况选择的。
System.out.println(“username\tpassword\temail\tsex”);这个是我的表中的四列名称,打印结果:
username password email sex
tom 123 tom.com male
mary 123 mary.com female
luvy 123 lucy.com female
jerry 123 jerry.com male
(格式就这样吧。。。实现效果就行了)
如果这一步成功了,那么登录的功能就解决了一部分了。
简单的前端登录界面

<body>
	<form class="form-horizontal" action="${pageContext.request.contextPath }/login" method="post"><!-- 递交表单 -->
						
							<label>用户名</label><br>
							
								<input type="text" id="username" name="username"
									placeholder="请输入用户名"><br>
							<label>密码</label><br>
								<input type="password" id="inputPassword" name="password"
									placeholder="请输入密码"><br>
								<input type="submit" width="100" value="登录" name="submit"><br>
						<a href="register.jsp">注册</a><br>
	</form>
</body>

在这里插入图片描述
这里,我们将输入的数据传输到servlet。
创建一个类,实现与数据库的连接:

package com.hpu.edu.dong;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class userlogin {
	  private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
	  private static String dbURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=web13";
	  //协议:自协议:数据源标识
	  private static String userName="sa";
	  private static String userPwd="123";
	  public boolean isuserlogin(String username,String password) throws SQLException{
		  boolean exist=false;
		  String sql="select * from [user] where username='"+username+"' and password='"+password+"'"; 
		  try {
			Class.forName(driverName);
			Connection conn=DriverManager.getConnection(dbURL, userName, userPwd);
			Statement state=conn.createStatement();
			ResultSet rs=state.executeQuery(sql);
			if(rs.next()){
				exist=true;
			}
			rs.close();
			state.close();
			conn.close();
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		  if(exist){//判断用户名是否与设定一样
			  return true;
		  }
		  else return false;
	  }
}

创建servlet::loginServlet。由于前面的传递jsp页面中,信息传递给login,所以在创建·servlet时,url-pattern时需要改为login。

package com.hpu.edu.dong;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class loginServlet extends HttpServlet {
	
	@Override
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		boolean b=false;
		userlogin login=new userlogin();//新建对象
		
		String username=request.getParameter("username");
		String password=request.getParameter("password");
		String result="";
		
		try {
			b=login.isuserlogin(username, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if(b){
			response.sendRedirect("success.jsp");
		}else{
			response.sendRedirect("faile.jsp");
		}
		
	}

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

运行结果:
输入正确用户名和密码时:
在这里插入图片描述
输入错误用户名和密码时:
在这里插入图片描述
至此,简单的登陆功能已经完成了,下一篇会展示注册功能的实现


版权声明:本文为weixin_44298615原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。