UserServlet中获取登录用户名
来源:7-2 项目作业
视线模糊
2020-10-28 07:02:00
# 具体遇到的问题
UserServlet中怎么获取登录用户名?
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
package com.imooc.web.action;
import java.io.IOException;
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 com.imooc.domain.User;
import com.imooc.service.UserService;
import com.imooc.service.impl.UserServiceImpl;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收参数
String methodName=request.getParameter("method");
//判断
if("login".equals(methodName)) {
login(request,response);
}else if("logout".equals(methodName)) {
logout(request,response);
}
}
private void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
//1、销毁session
request.getSession().invalidate();
//2、跳转到登录页面
response.sendRedirect(request.getContextPath()+"/login.jsp");
}
private void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 完成验证码的校验:
// 获得session中保存的验证码的信息
String code1 = (String) request.getSession()
.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
// 接收前台表单提交的验证码的信息
String code2 = request.getParameter("checkCode");
if (code2 == null || !code2.equalsIgnoreCase(code1)) {
request.setAttribute("msg", "验证码输入不正确!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
//接收页面提交过来的用户名和密码
String username=request.getParameter("username");
String password=request.getParameter("password");
//输出接收到的用户名和密码
System.out.println(username+" "+password);
//数据封装
User user=new User();
user.setUsername(username);
user.setPassword(password);
//处理数据
UserService userService=new UserServiceImpl();
User existUser=userService.login(user);
//根据处理结果,完成页面跳转
if(existUser==null) {
//登录失败,返回到登录页面
request.setAttribute("msg", "用户名或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}else {
//登录成功,保存用户信息
request.getSession().setAttribute("existUser", existUser);
response.sendRedirect(request.getContextPath()+"/MessageServlet");
// response.sendRedirect(request.getContextPath()+"/message_list.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
package com.imooc.web.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String methodName=request.getParameter("method");
if("edit".equals(methodName)) {
//根据已登录用户信息,将用户全部信息传递到edit_user.jsp页面
edit(request,response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
/**
* 根据用户登录的信息,将所有用户信息查询出来并跳转至edit_jsp页面
* @param request
* @param response
*/
private void edit(HttpServletRequest request, HttpServletResponse response) {
//从登录用户中获取用户名
String userName=(String) request.getSession().getAttribute("existUser.getUsername");
System.out.println(userName);
}
}
在这里输入代码,可通过选择【代码语言】突出显示
1回答
同学你好,如下是将登录的用户信息存入session中,
在UserServlet中,可以从session中获取User对象,再从对象获取用户名,代码参考:
User user=(User) request.getSession().getAttribute("existUser");
String username = user.getUsername();
相似问题