您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
22_登录案例_代码实现2(转发到成功或失败“界面”并附带数据转发与接收)
发布时间:2022-08-14 11:55:05编辑:雪饮阅读()
继昨天的登录案例,这次来继续完善下。
首先就是登录成功与失败的展示方式有很多种,这里就分别以成功的servlet和失败的servlet这两个servlet来做登录成功或登录失败后所接受的承载体吧。
登录成功
src/User/login/SuccessServlet.java:
package User.login;
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.io.IOException;
@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("登录成功");
System.out.println("登录成功,用户信息是:"+request.getAttribute("user"));
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
登录失败:
src/User/login/FailServlet.java:
package User.login;
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.io.IOException;
@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("登录失败");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
登录处理完善
可以看到登录成功时候有调用一个request里面存储的Attribute并且key为user,并且我们要在登录处理处区分登录成功和登录失败这两个对应不同的跳转,到上面对应的登录成功的servlet和登录失败的servlet。
src/User/Login.java:
package User;
import dao.UserDao;
import domain.User;
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.io.IOException;
@WebServlet("/User/Login")
public class Login extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User u=new User();
System.out.println("username:"+request.getParameter("username"));
System.out.println("password:"+request.getParameter("password"));
u.setUsername(request.getParameter("username"));
u.setPassword(request.getParameter("password"));
UserDao ud=new UserDao();
User loginedUser= ud.login(u);
if(loginedUser==null){
//注意,这里是从doPost中转发出去的,所以接收方也该是dopost
request.getRequestDispatcher("/failServlet").forward(request,response);
}
else{
request.setAttribute("user",loginedUser);
request.getRequestDispatcher("/successServlet").forward(request,response);
}
System.out.println("loginedUser:"+loginedUser);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
注意:
在响应给页面时候设置编码时候要用response.setContentType("text/html;charset=utf-8");而不是response.setCharacterEncoding,后者这个方法暂时我还不晓得是在什么时候用的。反正用后者这个方法页面有中文还是乱码,而前者这个方法则可以解决我当前遇到的这个中文乱码问题。
关键字词:登录,案例,代码,实现