登录与注册算是学习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);
}
}
运行结果:
输入正确用户名和密码时:
输入错误用户名和密码时:
至此,简单的登陆功能已经完成了,下一篇会展示注册功能的实现