1、MVC开发模式(web开发模式):
M:model-------javabean(封装数据)
V:view----------jsp(显示数据)
C:controller----servlet(获取数据)
2、javaee的三层架构(javaee开发):
web层:与客户端交互
service层:复杂的业务处理
dao层:与数据库交互
3、工程结构:
4、三层架构:
web层:
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { HttpSession httpSession=request.getSession(); String username=request.getParameter("username");//从表单获取数据,并作为形式参数传递到login函数中 String password=request.getParameter("password"); UserService userService=new UserService(); User user=userService.login(username,password);//从service层获取user信息,该信息是从数据库中查询的 if(user!=null){ httpSession.setAttribute("user",user);//失败的话,重定向到首页 response.sendRedirect(request.getContextPath()+"/main.jsp"); response.getWriter().write("ni hao"); }else{ request.setAttribute("logerrorinf","用户名或密码错误") ; request.getRequestDispatcher("/index.jsp").forward(request,response); }
创建Servlet从表单获取用户信息,并将此信息作为参数传递到service层。
service层:
public class UserService { public User login(String username, String password) {//返回dao层的user信息 UserDao userDao=new UserDao(); return userDao.login(username,password); } }
将参数传递到dao层,并将冲数据库中查询的值返回给web层。便于web层对是否登录成功进行校验。
dao层:
public class UserDao { public User login(String username, String password) {//返回查找到的符合条件的用户 Connection con=null; User user= null; try { con= C3p0Utils.getConnection(); QueryRunner qr = new QueryRunner(); String sql = "Select * from login where account=? and password=?"; Object[] select = {username,password}; return qr.query(con, sql, new BeanHandler<User>((User.class)), select); } catch (SQLException e) { throw new RuntimeException(e); } }
查询是否有符合条件的用户,将结构封装到Javabean中,并返回查询结果。
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>login</title> </head> <body bgcolor="aqua"> <center> <h3>登录</h3> <form action="/Login_MVC_war_exploded/loginservlet" method="post"> 用户名:<input type="text" name="username" size="12"><br> 密 码 :<input type="password" name="password" size="12" ><br><br> <input type="reset" value="取消"> <input type="submit" value="登录"> </form> <h5 style="color:red">${requestScope.logerrorinf}</h5> <!--运用EL获取值--> </center> </body> </html>
该jsp页面主要实现登录功能,为Servlet提供用户数据,并运用EL从request域中获取值。
main.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>main</title> </head> <body> <c:if test="${empty user}"> <li><a href="index.jsp"></a></li> </c:if> <c:if test="${!empty user}"> 你好,${sessionScope.user.getAccount()} </c:if> </body> </html>
该jsp实现了登录成功后的显示功能,并从session域中获得用户的账户名称。
5、效果:
初始界面:
登录失败界面:
登录成功界面: