Maison > 类库下载 > java类库 > MVC模式实现登录以及增删改查之登录

MVC模式实现登录以及增删改查之登录

高洛峰
Libérer: 2016-11-04 17:15:13
original
3829 Les gens l'ont consulté

我在这里用的不是maven项目,用的一般的web项目,所以需要用到的架包需要自己去下载添加,在项目中,一定注意环境的配置,我用的是jre1.7

 1  新建项目

1.png

2  建立好MVC的管理包,导入对应的架包servlet

1.png

3 建立好与数据库对应的实体类 teacher.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

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();

            }

}

Copier après la connexion

4 在WebContent新建login.jsp文件编写登陆框

1

2

3 用户名:

4 密码:

5

6


5 配置web.xml文件对应表单请求login

1.png

web.xml文件

注意:配置时要在之前,否则会报错

1

2

3

4

5

6

7

8

9

<!-- 提交登录请求 -->

  <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>

Copier après la connexion

6 编写对应的请求实体类LoginController.java:继承HttpServlet重写doget(),dopost()方法,根据method请求的不同调用doget或者dopost方法

LoginController.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

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");

        }     

            }

}

Copier après la connexion

7 从后台dao层写到control层

1

2

3

4

5

6

7

8

9

public interface TeacherDao {

     

    /**

     * 验证老师是否存在

     * @param tc

     * @return

     */

    public Teacher validateTeacher(Teacher tc);

}

Copier après la connexion

8.1 编写封装类建立与数据库的连接JDBCUtil.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

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();

                }

          }

 

}

Copier après la connexion

8.2 dao层的实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

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;

    }

}

Copier après la connexion

9 Service层

1

2

3

4

5

6

7

8

9

public interface valiDateService {

/**

 * @param tc

 * @return 老师对象

 * 根据用户输入值验证老师是否存在

 */

    public Teacher valiDateTeacher(Teacher tc);

 

}

Copier après la connexion

10 Service层实现ServiceImpl.java

1

2

3

4

5

6

7

8

9

10

11

12

13

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;

    }

}

Copier après la connexion

11 com.zr.controller层

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

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);

        }

    }

}

Copier après la connexion


Étiquettes associées:
mvc
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal