在IDEA环境下,创建MVC项目,代码以用户登录模块为例

首先明确MVC到底是个啥,应注意与三层架构的区别
M:model(模型)
V:view(视图)
C:controller(控制器)

视图层:所谓前端,进行人机交互的页面,通常是html css js jsp。
控制器:相当于上层与底层交互的中间层,将视图层的数据分发给模型层,将模型层返回的结果传回视图层 ,通常可以是Servlet文件。
模型层:处理业务逻辑(封装业务逻辑的Java bean) + 处理数据(封装数据的Java bean),例如对数据库的连接和SQL的处理,对数据库表中的各属性进行封装。

下面用一个登录的demo讲解,前提为创建一个web项目,并正确连接数据库,若不会,之前有博客
(环境:IDEA2019   Mysql  8.0.19        mysql driver:8.0.15  servlet:3.0以上版本)
数据库结构:

默认为index.jsp为首页,别忘了修改web.xml文件,设置为Login.jsp ,设置首页方法如下(真是操碎了心,怕你们又要404找半天原因0.0

<welcome-file-list>
        <welcome-file>Login.jsp</welcome-file>
</welcome-file-list>

创建一个JSP文件代码如下(视图层)(Login.jsp)

<%--
  Created by IntelliJ IDEA.
  User: Laura Li
  Date: 2020/3/1
  Time: 18:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Login</title>
  </head>
  <body>

          <form action="LoginServlet" method="post">
            Username: <input type="text" name="Uname"><br/>
            Upwd: <input type="password" name="Upwd"><br/>
            <input type="submit" value="Login">
          </form>
  </body>
</html>

创建Servlet文件(控制器),在src下创建一个com.Login.Servlet包,在该包下创建LoginServlet.java

package com.Login.Servlet;

import com.Login.Dao.LoginDao;
import com.Login.entity.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;

//控制器层,用来接受view请求, 并分发给Model处理
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("Uname");
        String pwd = request.getParameter("Upwd");
        User login = new User(name, pwd);
        //调用模型层的登录功能
        int result = LoginDao.login(login);
        if(result>0){
            response.sendRedirect("Welcome.jsp");    //此处为登录成功后的跳转页面,自行自定义,就输出一句登录成功也好
        }else if(result == 0){
            response.sendRedirect("Login.jsp");
        }else{

        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

下面为模型层,分为两个   1.封装业务逻辑     2.封装数据

1.封装业务逻辑的Java bean,在src下创建一个com.Login.Dao包,在该包下创建LoginDao.java

package com.Login.Dao;

import com.Login.entity.User;

import java.sql.*;

//模型层:用于处理登录
public class LoginDao {
    public static int login(User user){    //Login
        int flag = -1; //默认登录失败
        Connection connection = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        int result = -1;
        String Url="jdbc:mysql://localhost/User";
        String User="root";
        String Pwd="123456";
        try{
            //a.导入驱动,加载具体的驱动类
            Class.forName("com.mysql.jdbc.Driver");//加载具体驱动类
            //b.与数据库建立连接
            connection = DriverManager.getConnection(Url, User,Pwd);
            System.out.println("数据库连接成功");
            String sql = "select count(*) from user where Username =? and Password =?";
            pstmt = connection.prepareStatement(sql);
            pstmt.setString(1,user.getUserName());
            pstmt.setString(2,user.getPassWord());
            rs = pstmt.executeQuery();
            if(rs.next()){
                result = rs.getInt(1);
            }
            if(result>0){
                System.out.println("账号密码正确");
                return flag = 1;
            }else {
                System.out.println("账号密码错误");
                return flag = 0;   //登录失败(用户名或密码错误)
            }
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("系统异常");
            return flag = -1 ;      //登录异常
        }finally {
            try{
                if(rs!=null) rs.close();
                if(pstmt!=null) pstmt.close();
                if(connection!=null) connection.close();
            }catch (Exception e){}
        }

    }
}

2.封装数据的Java bean,在com.Login.entity包下创建User.java(其实应该创建Login.java比较合适,不过我不想改代码了,你们自行修改吧),可以自己写,也有两种方式进行软件自动生成,自动生成数据库实体类的方法,另开博客写,回头补链接

package com.Login.entity;

public class User {

  private String userName;
  private String passWord;


  public User(String userName) {
    this.userName = userName;
  }

  public User(String uname, String upwd){
    this.userName = uname;
    this.passWord = upwd;
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }


  public String getPassWord() {
    return passWord;
  }

  public void setPassWord(String passWord) {
    this.passWord = passWord;
  }

}

下面一个完整的登录模块便写完了,无图无真相,上图
账号密码正确

账号或密码错误

发布了36 篇原创文章 · 获赞 39 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/LJH_laura_li/article/details/104680202
今日推荐