程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> MVC模式實現登錄以及增刪改查之登錄(一),mvc增刪

MVC模式實現登錄以及增刪改查之登錄(一),mvc增刪

編輯:JAVA綜合教程

MVC模式實現登錄以及增刪改查之登錄(一),mvc增刪


我在這裡用的不是maven項目,用的一般的web項目,所以需要用到的架包需要自己去下載添加,在項目中,一定注意環境的配置,我用的是jre1.7

 

1  新建項目

2  建立好MVC的管理包,導入對應的架包servlet

3 建立好與數據庫對應的實體類 teacher.java

public class Teacher {
            private  int  tid;
            private  String tname;
            private  String tpsw;
            public int getTid() {
                return tid;
            }
            public void setTid(int tid) {
                this.tid = tid;
            }
            public String getTname() {
                return tname;
            }
            public void setTname(String tname) {
                this.tname = tname;
            }
            public String getTpsw() {
                return tpsw;
            }
            public void setTpsw(String tpsw) {
                this.tpsw = tpsw;
            }
            public Teacher(String tname, String tpsw) {
                super();
                this.tname = tname;
                this.tpsw = tpsw;
            }
            public Teacher(int tid, String tname, String tpsw) {
                super();
                this.tid = tid;
                this.tname = tname;
                this.tpsw = tpsw;
            }
            public Teacher() {
                super();
            }
}

4 在WebContent新建login.jsp文件編寫登陸框

1 <body>
2 <form action="login" method="post">
3 用戶名:<input type="text" name="tname">
4 密碼:<input type="text"  name="tpsw">
5 <input type="submit" value="登錄">
6 </form>

5  配置web.xml文件對應表單請求login

web.xml文件

注意:配置時<servlet-name>要在之前,否則會報錯<servlet-class>

<!-- 提交登錄請求 -->
  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.zr.controller.LoginController</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>

6 編寫對應的請求實體類LoginController.java:繼承HttpServlet重寫doget(),dopost()方法,根據method請求的不同調用doget或者dopost方法

LoginController.java

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.zr.model.Teacher;
import com.zr.service.valiDateService;
import com.zr.serviceIm.valiDateServiceImpl;
public class LoginController   extends  HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
         throws ServletException, IOException {
                super.doPost(req, resp);
            }
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
          throws ServletException, IOException {
           //獲取前台form表單的input輸入框
           String tname=req.getParameter("tname");
           String tpsw=req.getParameter("tpsw");
           Teacher tc=new Teacher();
           tc.setTname(tname);
           tc.setTpsw(tpsw);
           valiDateService vds=new valiDateServiceImpl();
          Teacher t=    vds.valiDateTeacher(tc);
        HttpSession  session=req.getSession();
        session.setAttribute("teacher", t);
        if (t!=null) {
            //返回的不是空值,重定向到登錄成功界面
            req.getRequestDispatcher("main.jsp").forward(req, resp);
        } else {
            //返回空值,請求轉發到登錄界面
            resp.sendRedirect("login.jsp");
        }      
            }
}

7 從後台dao層寫到control層

public interface TeacherDao {
    
    /**
     * 驗證老師是否存在
     * @param tc
     * @return
     */
    public Teacher validateTeacher(Teacher tc);
}

8.1 編寫封裝類建立與數據庫的連接JDBCUtil.java

package JDBCUtil;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

    public class JDBCUtil {
         //1.數據庫地址  (根據不同的數據標准是不一樣)
          private  final  static String DBURL = "jdbc:mysql://localhost:3306/student_crm?useUnicode=true&characterEncoding=UTF8";
          //2.設置用戶和密碼
          private  final  static String  USERNAME = "root";
          private  final  static String  PASSWORD = "root";
          //3.設置驅動名稱 (根據不同的數據標准是不一樣)
          private  final  static String  DBDRIVER = "com.mysql.jdbc.Driver";
          /**
           * 獲取數據庫連接
           * @return  返回數據庫連接
           */
          public  static  Connection  getConnection(){
              Connection  con = null;
              try {
                Class.forName(DBDRIVER);
                con  =  DriverManager.getConnection(DBURL, USERNAME, PASSWORD);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
              return  con;    
          }
//關閉連接 public static void closeJDBC(Statement st,Connection con) throws SQLException{ if(st!=null){ st.close(); } if(con!=null){ con.close(); } } }

 

8.2 dao層的實現

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.zr.dao.TeacherDao;
import com.zr.model.Teacher;
import JDBCUtil.JDBCUtil;
public class TeacherDaoImpl implements TeacherDao{
    /**
     * 輸入老師的對象,返回老師對象
     * @param args
     */
    public Teacher validateTeacher(Teacher tc) {
        Teacher teacher=new Teacher();
        //sql語句
        StringBuffer sql=new StringBuffer("select * from teacher where tname=? and tpsw=?");
        //獲取數據庫連接
        Connection con=JDBCUtil.getConnection();
        try {
            PreparedStatement  pst=con.prepareStatement(sql.toString());
            pst.setString(1, tc.getTname());
            pst.setString(2, tc.getTpsw());
            //返回一個結果集
            ResultSet rs=pst.executeQuery();
            if (rs.next()) {
            //把結果集裡面的數據放入對應的teacher對象
                teacher=new Teacher(rs.getInt("tid"),rs.getString("tname"),rs.getString("tpsw"));
            } 
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return teacher;
    }
}

9 Service層

public interface valiDateService {
/**
 * @param tc
 * @return 老師對象
 * 根據用戶輸入值驗證老師是否存在
 */
    public Teacher valiDateTeacher(Teacher tc);

}

10 Service層實現ServiceImpl.java

import com.zr.dao.TeacherDao;
import com.zr.daoIm.TeacherDaoImpl;
import com.zr.model.Teacher;
import com.zr.service.valiDateService;
public class valiDateServiceImpl implements valiDateService{
    public Teacher valiDateTeacher(Teacher tc) {
        //父類的引用指向子類的對象,父類可以直接調用子類的方法
        TeacherDao teacherDao=new TeacherDaoImpl();
        //調用dao層的方法驗證存在
        Teacher teacher=teacherDao.validateTeacher(tc);
        return teacher;
    }
}

11 com.zr.controller層

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.zr.model.Teacher;
import com.zr.service.valiDateService;
import com.zr.serviceIm.valiDateServiceImpl;
public class LoginController extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 獲取前台form表單的input輸入框
        String tname = req.getParameter("tname");
        String tpsw = req.getParameter("tpsw");
        // 將前台對象放入tc對象,作為輸入參數
        Teacher tc = new Teacher();
        tc.setTname(tname);
        tc.setTpsw(tpsw);
        // 調用Service層的方法傳入tc對象,並用t接收返回結果
        valiDateService vds = new valiDateServiceImpl();
        Teacher t = vds.valiDateTeacher(tc);
        // 獲取JSP作用域session,將老師t對象放入session
        HttpSession session = req.getSession();
        int a = t.getTid();//最好根據返回的老師的id進行判斷
        if (a != 0) {
            // 返回的有id,重定向到登錄成功界面
            req.getRequestDispatcher("main.jsp").forward(req, resp);
            session.setAttribute("teacher", t);
        } else {
            // 返回空值,請求轉發到登錄界面
            req.getRequestDispatcher("login.jsp").forward(req, resp);
        }
    }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved