login.jsp:
<form name="formName" method="post" action="servlet/AdminVerify">
<tr>
<td width="18%" height="30">
<div align="center">用户</div>
</td>
<td width="50%" height="30"><input name="name" type="text"></td>
<!-- 宽度规定,然后rowspan,则该列都合并,其他的行少出现一个td的使用 -->
<td width="32%" rowspan="4">
<!-- input里面可以有斜杠,也可无 --> <!-- 注意"image"类型的用法,必须有图片src参数。它相当于一个按钮,
所以可以有onClick,且注意return及分号不能少,实际上传递的false值无意义--> <input
type="image" name="imageField" src="images/dl.gif"
onClick="return check();">
</td>
</tr>
<tr>
<td height="30">
<div align="center">密码</div>
</td>
<td height="30"><input name="password" type="password"></td>
</tr>
<tr>
<td height="30">
<div align="center">权限</div>
</td>
<td height="30">
<!-- 下拉列表,文本内容会显示 --> <select name="st">
<option value="管理员">管理员</option>
<option value="客户">客户</option>
</select>
</td>
</tr>
<!-- table中的空白行和列可以有center,left,right属性的作用 -->
<tr>
<!-- 虽未空白行,但是td不能省略 -->
<td height="30"></td>
<td height="30"></td>
</tr>
</form>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>hotel2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>AdminVerify</servlet-name>
<servlet-class>servlet.AdminVerify</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdminVerify</servlet-name>
<url-pattern>/servlet/AdminVerify</url-pattern>
</servlet-mapping>
</web-app>
AdminVerify.java:
package servlet;
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import service.Service;
public class AdminVerify extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
String name = request.getParameter("name");
String password = request.getParameter("password");
String st = request.getParameter("st");
Service service=new Service();
ResultSet rs=service.getResult(name,password,st);
try {//rs出现的地方都需要try-catch
if (!rs.next()) {
out.print("<script>alert('你输入的用户不存在或密码错误,请重新登录!');window.history.go(-1);</script>");
} else {
//
//
request.getSession().setAttribute("name", request.getParameter("name"));
if (request.getParameter("st").equals("客户")) {
//st一样赋值给session
request.getSession().setAttribute("st", "客户");
} else {
//password这里不必要放入session
request.getSession().setAttribute("st", rs.getString("user_type"));
}
response.sendRedirect(request.getContextPath()+"/main.jsp");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Service.java:
package service;
import java.sql.*;
import java.util.*;
import db.DBUtil;
public class Service {
private Connection conn;
private Statement stmt;
private ResultSet rs;
private String sql;
public ResultSet getResult(String name, String password, String st) {
//这一句放到方法外面出现错误
conn=DBUtil.getConnection();
if (st.equals("客户")) {
sql = "select * from customr where customer_name=name and customer_password=password";
} else {
sql = "select * from users where user_name=name and user_password=password";
}
try {
// jsp没try不会报错,容易错误
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
//
return rs;
}
}
java.lang.NullPointerException
at servlet.AdminVerify.doPost(AdminVerify.java:30)
在if(!rs,next())处
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'name' in 'where clause'