UserServlet——》 loginUI方法
return “/jsp/login.jsp”;
public String loginUI(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
return “/jsp/login.jsp”;
}
实现登录的原理分析
1、准备工作
/jsp/login.jsp 设置form标签的action和method的属性
设置表单下input标签的name属性
<input type=“text” name=“username” class=“form-control” id=“username”
placeholder=“请输入用户名”>
UserServlet页面获取该请求
UserServlet -->userLogin
**获取数据
调用业务层功能
成功session当中存放用户信息,重定向到首页
失败向request的session当中失败信息,转发到登录页面**
// userLogin
public String userLogin(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
// 获取用户数据(账户/密码)
User user = new User();
MyBeanUtils.populate(user, request.getParameterMap());// 遍历表单数据将表达上对应的值放入到user对象当中
// 调用业务层登录功能
UserService userService = new UserServiceImpl();
User user02 = null;
// Alt + Shift + z 抛出异常
try {
// 在daoimpl要实现该语句select * from user where username = ? and password = ?
user02 = userService.userLogin(user);// 返回登录的用户
// 用户登录成功,将登录成功对应的用户的user02对象放入到session作用域当中
request.getSession().setAttribute(“loginUser”, user02);
response.sendRedirect(“/store_v5/index.jsp”);
return null;
} catch (Exception e) {
// 用户登录失败
String message = e.getMessage();// 获取到对应失败的信息
System.out.println(message);
//向 request放入登录失败的信息
request.setAttribute(“msg”, message);
return “/js/login.jsp”;
}
service层
自定义的异常向Servlet传递一些2种数据(密码不存在,用户未激活)
package cn.itzheng.store.service;
import java.sql.SQLException;
import cn.itzheng.store.domain.User;
public interface UserService {
void userRegist(User user) throws SQLException;
boolean userActive(String code) throws SQLException;
User userLogin(User user) throws SQLException;
}
serviceimpl
@Override
public User userLogin(User user) throws SQLException {
// 此处:可以利用异常在模块当中传递一些数据
UserDao userDao = new UserDaoImpl();
// select * from user where username = ? and password =?
User uu = userDao.userLogin(user);
if (null == uu) {
//在这里抛出对应的异常让其在Servlet里面捕获到对应的异常,并反馈到对应的页面上去
throw new RuntimeException(“密码有误!”);
} else if (uu.getState() == 0) {
throw new RuntimeException(“用户未激活!”);
} else {
return uu;
}
}
dao层
package cn.itzheng.store.dao;
import java.sql.SQLException;
import cn.itzheng.store.domain.User;
public interface UserDao {
void userRegist(User user) throws SQLException;
User userActive(String code) throws SQLException;
void updateUser(User user) throws SQLException;
User userLogin(User user) throws SQLException;
}
daoimpl
@Override
public User userLogin(User user) throws SQLException {
// TODO Auto-generated method stub
String sql = “select * from user where username = ? and password = ?”;
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
return qr.query(sql, new BeanHandler(User.class), user.getUsername(), user.getPassword());// 将查询到的内容反放到BeanHandler对象当中且其泛型是User
}
/jsp/index.jsp当获取到用户的一些信息
引入jstl标签库
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<c:if test=“${empty loginUser}”>