综合开发
注册登录,用户请求与响应
首先理解这几个问题
1,先要清楚传进来什么:
user, pass
2,判段的是什么:
用户名是否存在
基于1中已存在的情况下判断密码是否匹配
3,响应页面
login.jsp:
- 当登录成功,到一个新页面, 并显示该用户的信息
- 失败则返回登录页面或在登录页面基础上加错误提示
具体代码实现
1,新建一个servlet(名为LoginServlet),代码:
package guigu;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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 java.sql.*;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("Login Test");
String user = request.getParameter("user");
String pass = request.getParameter("pass");
Connection conn = (Connection)getServletContext().getAttribute("conn");
LoginModel obj = new LoginModel();
//第三方类用来连接数据库并判断登录结果
try{
String res = obj.check(conn, user, pass);
request.setAttribute("res", res);
RequestDispatcher view = request.getRequestDispatcher("login.jsp");//分派请求
view.forward(request, response);
}
catch(Exception e){
e.printStackTrace();
}
}
}
2,再新建LoginModel.java,代码:
package guigu;
import java.sql.*;
public class LoginModel {
private Statement state = null;
private String sql = "select * from user";
private ResultSet rs = null;
public String check(Connection conn, String user, String pass) throws SQLException{
state = conn.createStatement();
rs = state.executeQuery(sql);//查询
while(rs.next()){
if(rs.getString(2).equals(user)){
if(rs.getString(3).equals(pass)){
String sno = rs.getString(1);
return "1" + sno;//成功登录
}
return "-1";//密码不匹配
}
}
return "0";//用户名不存在
}
}
3,配置web.xml文件:
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>adrui.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>