利用web登陆验证用户信息
在第一个web登录界面的基础上实现用户验证
1.在用户信息核对的基础上添加
package com.myfirstwebLogin;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLNonTransientConnectionException;
import java.sql.Statement;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginCheck extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
Connection conn=null;
Statement state=null;
ResultSet result=null;
try{
//接收用户名和密码
String username=req.getParameter("username");
String password=req.getParameter("password");
String msg=req.getParameter("hiddenMessage");
try{
try {
//连接数据库
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
System.out.println("驱动未找到");
e.printStackTrace();
}
try {
//得到连接
String url="jdbc:mysql://localhost:3306/usersinfodatabase?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT&2B8";
conn=DriverManager.getConnection(url,"root","123");
} catch (SQLNonTransientConnectionException e) {
// TODO 自动生成的 catch 块
System.out.println("未成功连接至数据库");
e.printStackTrace();
}
//创建一个Statement
state=conn.createStatement();
//Select * from users order by userId limit 1返回第一条数据
//寻找password列,以匹配username
result=state.executeQuery("select password from users where username='"+username+"' order by userId limit 1");
if(result.next()){
//不能直接在result.getString();中直接写表格列名,要先初始化;
String pd="password";
if(result.getString(pd).equals(password)){
//设值session 验证用户是从login界面登录的
HttpSession hs=req.getSession(true);
hs.setMaxInactiveInterval(30);
hs.setAttribute(username, password);
//传递给welcome页面username和password
res.sendRedirect("welcome?username="+username+"&password="+password+"&hiddenMessage="+msg);
}
else{
//跳转的url
res.sendRedirect("login");
}
}
else{
//跳转的url
res.sendRedirect("login");
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
if(result!=null){
result.close();
}
if(state!=null){
state.close();
}
if(conn!=null){
conn.close();
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
catch(Exception exx){
exx.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res);
}
}
2.准备数据库
我这儿创建了3个样本
3.我测试途中最恼火的问题:
java连接至数据库的时候,因为我是默认安装mysql的,故需改如下设置,否则网络问题严重影响
改成本地系统登陆