Servlet端我用的HttpServlet,具体的代码如下:
package com.xuyan.javaweb;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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 loginServletJdbc extends HttpServlet {
private final String DRIVER = "com.mysql.cj.jdbc.Driver";
private final String URL = "jdbc:mysql://localhost:3306/user_info?serverTimezone=UTC";
private final String SQLUSERNAME = "root";
private final String SQLPASSWORD = "862578733";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doPost(req, resp);
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
PrintWriter pw = resp.getWriter();
try {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, SQLUSERNAME, SQLPASSWORD);
String sql = "SELECT COUNT(*) FROM USER WHERE USERNAME = ? AND PASSWORD = ?";
ps = con.prepareStatement(sql);
String username = req.getParameter("username");
String password = req.getParameter("password");
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
String[] interest = req.getParameterValues("interesting");
rs.next();
int num = rs.getInt(1);
if(num > 0) {
pw.println("Hello!" + username);
pw.print("Your interests are : ");
for (String str : interest) {
pw.print(str + " ");
}
}else {
pw.println("Sorry," + username + ",your password is wrong!");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(con != null) con.close();
if(ps != null) ps.close();
if(rs != null) rs.close();
if(pw != null) pw.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
以下是我遇到的几个问题:
1. 编写到一半的时候,我想做下测试,于是直接在Eclipse里面运行了Servlet,提示“HTTP Status 405 – Method Not Allowed”,具体说我用GET方法访问的文件
原因:查看了百度发现,默认情况下没有参数的访问是默认使用GET方式访问的文件,所以会出现这种错误;
2.编写完之后运行,前端页面提交表单又出现了“HTTP Status 405 – Method Not Allowed”错误
原因:在继承了HttpServlet之后,系统在doPost()方法下自动给出了"super.doPost(req, resp);";
解决方案:把“super.doPost(req, resp);”注释掉就好了;
3.解决完第二个问题后,问题又来了,前端页面提交表单后转到后端页面,提示ClassNotFoundException,JDBC驱动加载不成功
原因:jar包默认导入到了“Libraries”目录下,要先Servlet程序加载JDBC驱动,需要把jar包导入“WEB-INF”下的“lib”目录下才可以;
解决方案:将jar包导入到“WEB-INF”下的“lib”目录下;(Eclipse 的 Build Path 目录下有一个Source目录,在那里可以添加jar包目录);