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

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

Nov 04, 2016 pm 05:15 PM
mvc

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

 1  新建项目

1.png

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

1.png

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

2

3 用户名:

4 密码:

5

6


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

1.png

web.xml文件

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

<!-- 提交登录请求 -->
  <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);
        }
    }
}
登录后复制


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP MVC 架构:构建面向未来的 Web 应用程序 PHP MVC 架构:构建面向未来的 Web 应用程序 Mar 03, 2024 am 09:01 AM

引言在当今快速发展的数字世界中,构建健壮、灵活且可维护的WEB应用程序至关重要。PHPmvc架构提供了实现这一目标的理想解决方案。MVC(模型-视图-控制器)是一种广泛使用的设计模式,可以将应用程序的各个方面分离为独立的组件。MVC架构的基础MVC架构的核心原理是分离关注点:模型:封装应用程序的数据和业务逻辑。视图:负责呈现数据并处理用户交互。控制器:协调模型和视图之间的交互,管理用户请求和业务逻辑。PHPMVC架构phpMVC架构遵循传统MVC模式,但也引入了语言特定的功能。以下是PHPMVC

PHP MVC 架构的进阶指南:解锁高级功能 PHP MVC 架构的进阶指南:解锁高级功能 Mar 03, 2024 am 09:23 AM

mvc架构(模型-视图-控制器)是PHP开发中最流行的模式之一,因为它为组织代码和简化WEB应用程序的开发提供了清晰的结构。虽然基本的MVC原理对于大多数Web应用程序来说已经足够,但对于需要处理复杂数据或实现高级功能的应用程序,它存在一些限制。分离模型层分离模型层是高级MVC架构中常见的一种技术。它涉及将模型类分解为更小的子类,每个子类专注于特定功能。例如,对于一个电子商务应用程序,您可以将主模型类分解为订单模型、产品模型和客户模型。这种分离有助于提高代码的可维护性和可重用性。使用依赖注入依赖

揭秘SpringMVC框架的成功:它为何广受欢迎 揭秘SpringMVC框架的成功:它为何广受欢迎 Jan 24, 2024 am 08:39 AM

SpringMVC框架解密:为什么它如此受欢迎,需要具体代码示例引言:在当今的软件开发领域中,SpringMVC框架已经成为开发者非常喜爱的一种选择。它是基于MVC架构模式的Web框架,提供了灵活、轻量级、高效的开发方式。本文将深入探讨SpringMVC框架的魅力所在,并通过具体的代码示例来展示其强大之处。一、SpringMVC框架的优势灵活的配置方式Spr

如何使用PHP实现MVC模式 如何使用PHP实现MVC模式 Jun 07, 2023 pm 03:40 PM

MVC(Model-View-Controller)模式是一种常用的软件设计模式,可以帮助开发人员更好地组织和管理代码。MVC模式将应用程序分为三部分:模型(Model)、视图(View)和控制器(Controller),每个部分都有自己的角色和职责。在本文中,我们将讨论如何使用PHP实现MVC模式。模型(Model)模型代表应用程序的数据和数据处理。通常,

PHP中如何使用MVC架构设计项目 PHP中如何使用MVC架构设计项目 Jun 27, 2023 pm 12:18 PM

在Web开发中,MVC(Model-View-Controller)是一种常用的架构模式,用于处理和管理应用程序的数据、用户界面和控制逻辑。PHP作为流行的Web开发语言,也可以借助MVC架构来设计和构建Web应用程序。本文将介绍如何在PHP中使用MVC架构设计项目,并解释其优点和注意事项。什么是MVCMVC是一种软件架构模式,通常用于Web应用程序中。MV

PHP8框架开发MVC:初学者需要知道的重要概念和技巧 PHP8框架开发MVC:初学者需要知道的重要概念和技巧 Sep 11, 2023 am 09:43 AM

PHP8框架开发MVC:初学者需要知道的重要概念和技巧引言:随着互联网的快速发展,Web开发在当今的软件开发行业中扮演着重要的角色。PHP被广泛用于Web开发,并且有许多成熟的框架可以帮助开发人员更高效地构建应用程序。其中,MVC(Model-View-Controller)架构是最常见且广泛使用的模式之一。本文将介绍初学者在使用PHP8框架开发MVC应用程

如何在PHP8框架中实现可扩展的MVC架构 如何在PHP8框架中实现可扩展的MVC架构 Sep 11, 2023 pm 01:27 PM

如何在PHP8框架中实现可扩展的MVC架构引言:随着互联网的快速发展,越来越多的网站和应用程序采用了MVC(Model-View-Controller)架构模式。MVC架构的主要目标是将应用程序的不同部分分离开来,以便提高代码的可维护性和可扩展性。在本文中,我们将介绍如何在PHP8框架中实现可扩展的MVC架构。一、了解MVC架构模式MVC架构模式是一种软件设

PHP8框架开发MVC:逐步指南 PHP8框架开发MVC:逐步指南 Sep 11, 2023 am 10:05 AM

PHP8框架开发MVC:逐步指南引言:MVC(Model-View-Controller)是一种常用的软件架构模式,用于将应用程序的逻辑、数据和用户界面分离。它提供了一种将应用程序分成三个不同组件的结构,以便更好地管理和维护代码。在本文中,我们将探讨如何使用PHP8框架来开发一个符合MVC模式的应用程序。第一步:理解MVC模式在开始开发MVC应用程序之前,我

See all articles