MVC开发模式(举例)
程序员文章站
2022-04-02 10:41:27
...
MVC解释:
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
由于做项目的时候采用的模式就是MVC,但是具体不知道,那么来举个例子:
例:
代码功能主要是显示数据库,删除,登录等功能
User.java:
package Mvc;
import lombok.Data;
/**
* @author netXiaobao
* @version 1.0
* @date 2020/11/23 15:46
*/
@Data
public class User {
private String account;
private String passwd;
private String trueName;
}
CheckLogin.java
package Mvc;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;
/**
* @author netXiaobao
* @version 1.0
* @date 2020/11/23 19:24
*/
@WebServlet("/check")
public class CheckLogin extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String a=req.getParameter("account");
String b=req.getParameter("password");
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn= DriverManager.getConnection("jdbc:mysql://localhost/showdb?serverTimezone=PRC","root","");
QueryRunner run=new QueryRunner();
//查询显示
long count= run.query(conn,"select count(*) from net_user where account = ? and passwd = ?",new ScalarHandler<>(),a,b);
String msg="";
String url="";
if (count==0){
msg="登陆失败";
url="Mvc/fail.jsp";
}else if(count==1) {
msg="登录成功";
HttpSession s=req.getSession();
s.setAttribute("account",a);
url="Mvc/success.jsp";
}
req.setAttribute("msg",msg);
//转发,可以使用req.setAttribute() 传值
req.getRequestDispatcher(url).forward(req, resp);
}catch (Exception e){
e.printStackTrace();
}
}
}
Index.java
package Mvc;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
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;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;
/**
* @author netXiaobao
* @version 1.0
* @date 2020/11/23 15:42
*/
@WebServlet("/")
public class Index extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/showdb?serverTimezone=PRC","root","");
QueryRunner run=new QueryRunner();
//删除
if(req.getParameter("did")!=null){
run.update(conn,"delete from net_user where account= ?",req.getParameter("did"));
}
//查询显示
List<User> list= run.query(conn,"select account,passwd,trueName from net_user",new BeanListHandler<>(User.class));
req.setAttribute("users",list);
//转发,可以使用req.setAttribute() 传值
req.getRequestDispatcher("Mvc/show.jsp").forward(req, resp);
}catch (Exception e){
e.printStackTrace();
}
}
}
Logout.java
package Mvc;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @author netXiaobao
* @version 1.0
* @date 2020/11/23 20:42
*/
@WebServlet("/logout")
public class Logout extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session=req.getSession();
session.invalidate();
resp.sendRedirect("/Mvc");
}
}
接下来是JSP代码:
show.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: 86182
Date: 2020/11/23
Time: 15:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:if test="${sessionScope.account==null}">
<a href="/Mvc/login.jsp">登录</a>
</c:if>
<c:if test="${sessionScope.account!=null}">
<p>
<h5>欢迎:${sessionScope.account}</h5>
<a href="/logout">安全退出</a>
</p>
</c:if>
<h3>显示数据</h3>
<c:forEach items="${users}" var="u">
<p>${u.account}--${u.trueName}----
<c:if test="${sessionScope.account!=null}">
<a href="?did=${u.account}">删除</a></p>
</c:if>
</c:forEach>
</body>
</html>
login.jsp
<%--
Created by IntelliJ IDEA.
User: 86182
Date: 2020/11/23
Time: 19:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>管理登录</title>
</head>
<body>
<h3>管理登录</h3>
<form action="/check" method="post">
账号:<input type="text" name="account"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
<hr>
<a href="/Mvc">返回首页</a>
</form>
</body>
</html>
fail.jsp
<%--
Created by IntelliJ IDEA.
User: 86182
Date: 2020/11/23
Time: 19:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆失败</title>
</head>
<body>
<h3>登陆失败</h3>
<p STYLE="color: red">${msg}</p>
<br>
<a href="/Mvc/login.jsp">重新登陆</a>
<a href="/Mvc">返回首页</a>
</body>
</html>
success.jsp
<%--
Created by IntelliJ IDEA.
User: 86182
Date: 2020/11/23
Time: 19:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆成功</title>
</head>
<body>
<h3>登陆成功</h3>
<p STYLE="color: green">${msg}</p>
<br>
<a href="/Mvc">首页查看</a>
</body>
</html>
推荐阅读
-
ASP.NET MVC5网站开发之实现数据存储层功能(三)
-
ASP.NET MVC5网站开发之添加删除重置密码修改密码列表浏览管理员篇2(六)
-
ASP.NET MVC5网站开发之业务逻辑层的架构和基本功能 (四)
-
ASP.NET MVC5网站开发之用户添加和浏览2(七)
-
ASP.NET MVC5网站开发之用户资料的修改和删除3(七)
-
ASP.NET MVC5网站开发之登录、验证和注销管理员篇1(六)
-
ASP.NET MVC5网站开发之网站设置(九)
-
ASP.NET MVC5网站开发之展示层架构(五)
-
ASP.NET MVC5网站开发之用户角色的后台管理1(七)
-
使用asp.net mvc,boostrap及knockout.js开发微信自定义菜单编辑工具(推荐)