MVC——入门+最简单的小实例

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controler)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。


1.最上面直接面向用户的"视图层"(View)。它是提供给用户的操作界面。

2.最底层核心的"数据层"(Model),也就是程序需要操作的数据或信息。
3.中间层是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

    

    MVC就像有点类似于食堂,可以分成三部分。一部分是仓库,负责提供蔬菜等原材料,这是"数据层"(Model);另一部分是卖饭窗口,这是它的"视图层"(View),负责销售饭菜;两者之间是通过厨师这个"控制层"(Controller)将原材料从“仓库”中取出,处理加工后放到“窗口”上卖。


    下面就通过一个小例子进一步说明MVC的中三层的各自的作用以及交互。


1.新建mvc项目。



2.在Models文件夹下新建一个user类,用于模拟数据。

    public class user
    {
        public string userName {get;set; }
        public string passWord{get;set;}

        public  override string ToString ()
        {
            return "userName="+this.userName+",passWord="+this.passWord;
        }
    }


3.在Controllers文件夹下新建一个控制器,用于从获取user.cs中数据,并将处理后数据传给Index.cshtml视图。


namespace MyMvcTest.Controllers
{
    public class MyUserController : Controller
    {
        //
        // GET: /MyUser/

        public List<Models.user> InitData()
        {
            List<Models.user> list = new List<Models.user>()
            {
                new Models.user(){userName="1",passWord="1"},
                new Models.user(){userName="2",passWord="2"},
                new Models.user(){userName="3",passWord="3"}
            };

            return list;
        }

        public ActionResult Index()
        {
            //创建一个StringBuilder
            System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);

            //初始化数据
            List<Models.user> list = InitData();

            //从list中获取数据并存入到sbHtml中
            list.ForEach(d =>
            {
                sbHtml.AppendLine("<div>"+d.ToString()+"</div>");
            });

            //利用ViewBag传输数据给同名的index.cshtml视图
            ViewBag.HtmlStr = sbHtml.ToString();  //ViewBag是一个dynamic类型集合,可以动态添加任意类型的任意名称的属性和值
            return View();
        }

    }
}


4.添加视图,用于将数据显示到Index.cshtml视图中。


@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        @Html.Raw(ViewBag.HtmlStr)
    </div>
</body>
</html>


5.配置路由,设置新添加的视图为默认启动视图,在App_Start文件下找到RouteConfig.cs文件进行修改。



总结:View提供给操作界面,Model提供程序需要操作的数据或信息,Controller负责对数据加工并传入到到view中。

源码下载



  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
好的,下面是一个简单MVC 登录实例,使用 JSP、JavaBean 和 Servlet 实现用户登录验证: 1. 创建一个名为 User 的 JavaBean,包含用户的 id 和 password 属性,以及相应的 getter 和 setter 方法。 ```java public class User { private String id; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` 2. 创建一个名为 LoginServlet 的 Servlet,处理用户登录请求。在 doPost() 方法中,从请求参数中获取用户输入的 id 和 password,然后调用一个名为 validate() 的方法来验证用户信息。validate() 方法将根据用户输入的 id 和 password 查询数据库,如果查询结果不为空,则表示用户信息验证成功,将用户信息存储到 session 中,并跳转到登录成功页面;否则,跳转回登录页面,并显示错误消息。 ```java public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); String password = request.getParameter("password"); User user = new User(); user.setId(id); user.setPassword(password); if (validate(user)) { HttpSession session = request.getSession(); session.setAttribute("user", user); response.sendRedirect("success.jsp"); } else { request.setAttribute("error", "Invalid id or password"); RequestDispatcher rd = request.getRequestDispatcher("login.jsp"); rd.forward(request, response); } } private boolean validate(User user) { String url = "jdbc:mysql://localhost:3306/mydb"; String username = "root"; String password = "root"; try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection(url, username, password); PreparedStatement ps = con.prepareStatement("select * from users where id=? and password=?"); ps.setString(1, user.getId()); ps.setString(2, user.getPassword()); ResultSet rs = ps.executeQuery(); if (rs.next()) { return true; } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return false; } } ``` 3. 创建一个名为 login.jsp 的 JSP 页面,显示登录表单。如果用户输入了错误的 id 或 password,则显示错误消息。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> </head> <body> <form action="LoginServlet" method="post"> <input type="text" name="id" placeholder="id"><br> <input type="password" name="password" placeholder="password"><br> <input type="submit" value="Login"> </form> <br> <c:if test="${not empty error}"> <font color="red">${error}</font> </c:if> </body> </html> ``` 4. 创建一个名为 success.jsp 的 JSP 页面,显示登录成功页面。在页面中,通过 session 获取用户信息,并显示欢迎消息。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Success</title> </head> <body> <h1>Welcome, ${user.id}!</h1> </body> </html> ``` 以上就是一个简单MVC 登录实例的实现过程。需要注意的是,这只是一个入门级别的示例,实际开发中需要进行更多的安全性和可用性的考虑。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值