开发者学堂课程【Java Web项目实战1:注册登录、客户关系管理系统:登录功能代码实现】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/39/detail/907
登录功能代码实现
登录功能
LoginServlet. -->
1.获取表单数据,封装到 user 中
2.调用 service 的 login() 方法, 传递 form 过去!
3.如果 service 的 login() 方法,没有抛出异常!返回一-个User对象!
4.有异常:获取异常信息,保存到 request 域, 保存 form,转发到 login.jsp
5.没异常:保存返回的 user 对象到 session 中! ! !重定向到 welcome.jsp (显示当前用户信息! )
UserService#login()
public User login(User form) {...}
1.使用用户名查询数据库,得到返回的User
>返回为 null,抛出异常,异常信息为(用户名不存在)
>返回不为 null,获取查询出来的 user 的 password 与 form 的 password 进行比较!如果不同:抛出异常(密码错误! ) \
>如果相同,返回查询结果!
UserDao
1.通过用户名查询用户! (已经存在了,不用再写了! )
<Body>
<h1>登录</h1>
<p style="color: red; font-weight: 900">$ {msg }</p>
<8--$ {pageContext .request .contextPath }/RegistServlet --号><form action="<c:ur1 value= '/RegistServlet'/>" method= "post ">用户名: <input type= "text" name= "username" value= "$ {user . username } "/><br/>
密码: <input type= "passvord" name= "passvord" value= "S {user.password } "/><bx/>
<input type= "submit" value="登录"/>
</form>
</body>
</html>
import java.io. IOException; .
/**
* UserServlet 层
* Cauthor Cxf
*
*/
pablic class LoginServlet extends HttpServlet {
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request . setCharacterEncoding ("utf-8") ;//请求编码(POST)
response . setContentType ("text/ html; charset=utf-8") ; //响应编码
//依赖 UserService
UserService userService = new UserService ();
/*
*1.封装表单数据到 user form 中
*2.调用 service 的 1ogin() 方法,得到返回的 user user 对象。
>如果抛出异常:获取异常信息,保存到 request 域,再保存 form,转发到1ogin.jsp
>如果没有异常:保存返回值到 session 中,重定向到 welcome.japUser form = CommonUtils. toBean (request .getParameterMap(), User.class) ;
try {
User user
userService .login (form) ;
request .getSession() . setAttribute ("sessionUser", user) ;
response. sendRedirect (
request. getContextPath() + "/user/welcome .jsp");|
} catch (Use rException e) {
request.setAttribute ("msg", e .getMessage()) ;
request . setAttribute ("user", form) ;
request .getReque stDispatcher ("/user/1ogin.jsp") . forward (request, response) ; .
}
}
*注册功能
@param user
* @throws UserException
*/
public void regist (User user) throws UserException {
/*
* 1.使用用户名去查询,如果返回 null,完成添加
* 2.如果返回的不是 null,抛出异常!
*/
User_ user = userDao. findByUsername (user .getUsername());
if(_ user != nall) throw new UserException("用户名”+ user.getUsername() + ",已被注册过了! ");
userDao. add (user) ;
}
public User login(User form) {
// TODO Auto-generated method stub
return nu11;
}
*登录功能
* @param form
* @return
* @throws UserException
*/
pablic User login (User form) throws UserException {
/*
* 1.使用 form 中的 eername 进行查询,得到 user user*/User user = userDao. findByUsername (form. getUsername ()) ;
/*
* 2.如果返回 null,说明用户名不存在,抛出异常,异常信息为“用户名不存在"
*/if(user == nul1) throw new UserException ("用户名不存在! ");
/*
* 3.比较 usex 的 password 和 form 的 password, 如果不同,抛出异常,异常信息为“密码错误!”
*/
if (!form. getPassword() . equals (user .getPassword())) {
<meta http- equiv= "pragma" content= "no-cache ">
<meta http-equiv= "cache -control”content= "no-cache ">
<meta http-equiv= "expires" content= "0">
<meta http-equiv= "keyvords" content= "keyvord1 , keyword2 , keyvord3"><meta http-equiv= "description" content= "This is my page ">
<!- -
<link rel="stylesheet" type="text/css" href="styles.css">
-.->
</head>
<body>
<h1>欢迎登录本系统</h1>
<C: choose>
<c:when test="$ { empty sessi onScope sessionUser 》">浓 ! </ C :when>
<c : otherwise>
${sessionScope sessionUser }
</ C: otherwi se>
</ C: choose></body>
</html >