1.创建login.html页面
为了简单这里只有id和pwd
<lable>ID:</lable><input type="text" id="id" name="id"><br/>
<label>密码:</label><input type="password" id="pwd" name="pwd"><br/>
<button type="button" id="btn_submit" >登录</button>
2.创建后台LoginServlet.java
doPost中的关键代码:
int id = Integer.parseInt(request.getParameter("id"));
String pwd = (String)request.getParameter("pwd");
loginService = new LoginServiceImp();
Student stu = loginService.checkUserExist(id, pwd);
PrintWriter out = response.getWriter();
if(stu != null){
out.write("success");
}else{
out.write("id or pwd is false");
}
这里获取页面中传递的id和pwd,再调用service层进行验证,并将验证结果返回个前端页面。
3.创建Ajax链接servlet
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("#btn_submit").click(function (){
//检测id是否是数字,如果是,则向后端发送请求
if($("#id").val().match(/^[0-9]+$/)){
$.post(
"servlet/LoginServlet",
{
id:$("#id").val(),
pwd:$("#pwd").val()
},
function(data){
alert("back: " + data)
}
)
}else{
alert("id只能是数字类型")
}
})
})
</script>
这里对id进行数字类型验证,发送post请求给后端servlet。使用了jQuery的post方法。
4.创建ILoginService.java和LoginServiceImp.java
5.创建ILoginDAO.java和 LoginDAOImp.java
6.创建DButil链接mysql数据库
public class DButil {
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/test";
private String username = "root";
private String pwd = "root";
private Connection conn;
public void getConn(){
try {
Class.forName(driver); //加载驱动
conn = DriverManager.getConnection(url,username, pwd); //获取链接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ResultSet excuteQuery(String sql){
ResultSet res = null;
getConn();
try {
Statement statement = conn.createStatement();
res = statement.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
@Test
public void testDB(){
String sql = "select name, pwd from student where id = 1";
ResultSet excuteQuery = excuteQuery(sql);
try {
if(excuteQuery.next()){
System.out.println("name:" + excuteQuery.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注:如果出现“Access denied for user 'root'@'localhost' (using password: YES)”
(1)打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。
(2)重启MySQL服务。
源码位置:
链接:http://pan.baidu.com/s/1nvHUcvJ 密码:ol6e