栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

MVC基础探究

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MVC基础探究

MVC基础探究 MVC是什么

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。[1]
使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet +
javabean的模式。如图所示:


视图(JSP,HTML,ASP,VUE…)的职责:
1)数据显示
2) 发起请求(人机交互)
3)减少业务逻辑
控制器(Servlet)的职责:
1)获取前端的数据
2)页面跳转
3)创建Model层的引用
4)创建service层对象
Model(业务模型)
service + dao

Control和Model的交互

这里先谈Control控制器和Service业务逻辑的交互性。
可以先写一个Model页面中service页面,如下:

public class UserServiceImpl {
    public User login(String name,String pass){
        User user = null;
        if (name.equals("admin")&&pass.equals("admin")) {
            user = new User(name,pass);
        }
        return user;
    }
    public Boolean register(User user){
        if (user.getName().equals("张三")){
            System.out.println(user.getName()+"注册失败");
            return false;
        }
        System.out.println(user.getName()+"注册成功");
        return true;
    }
}

然后再写一个Control控制器页面,在控制器里调用了service的业务逻辑:

@WebServlet("/login.action")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        UserServiceImpl userService = new UserServiceImpl();

        //设置request的编码方式
        request.setCharacterEncoding("utf-8");
        //设置response的编码方式
        response.setCharacterEncoding("utf-8");
        //接收用户的信息
        String name = request.getParameter("name");
        String pass = request.getParameter("pass");
        System.out.println(name+":"+pass);

        User user = userService.login(name,pass);
        //判断是否登陆成功
        if (user != null) {
            //通过request得到Session对象
            HttpSession session = request.getSession();
            //将用户对象添加到session中
            session.setAttribute("user",user);
            //转发,传递信息request,response
            //request.getRequestDispatcher("main.html").forward(request,response);
            response.sendRedirect("main.html");
        }else {
            //登陆失败则重定向
            response.sendRedirect("failed.html");
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}
Control和View的交互

首先进入Control的页面:

@WebServlet("/userservlet.action")
public class UserServlet extends HttpServlet {
    public UserServlet() {
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        //创建用户对象列表
        List list = new ArrayList<>();
        list.add(new User("张飞",18,new Date()));
        list.add(new User("刘备",17,new Date()));
        list.add(new User("关羽",22,new Date()));
        list.add(new User("黄忠",23,new Date()));
        list.add(new User("赵云",25,new Date()));
        req.setAttribute("userlist",list);
        //转发
        req.getRequestDispatcher("userlist.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

然后再写View的页面,这里用jsp原生代码来实现:


<%--用表格来接收用户信息--%>


    <%
        Object obj = request.getAttribute("userlist");
        List user_list = (List)obj;
        for (User u: user_list) {
            out.print("");
        }
    %>

姓名年龄生日操作
"u.getName()+""+u.getAge()+"" +u.getBirth()+"修改 删除

用jstl重写View页面,首先需要在项目里导入jstl的jar包,jstl的全称是Java server pages standarded tag library,即JSP标准标签库,然后在页面引入jsp标准标签库,如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

接下来就可以使用jsp标准标签库,在使用过程中还要搭配EL表达式来使用,EL表达式全称为Expression

Language,即表达式语言。 EL表达式的作用是:代替jsp中的表达式脚本进行数据的输出,只能获取数据,不能设置数据。
EL表达式的格式是:${表达式} ,注:EL表达式写在jsp页面中,表达式一般是域对象的key。
EL表达式搜索域范围的顺序是:EL表达式主要是输出域对象中的数据,当四个域对象都有同一个key的值时,EL表达式会按照四个域对象的范围从小到大进行搜索,找到就输出,与四个域对象声明的先后顺序无关。


<%--用表格来接收用户信息--%>

        
编号 姓名 年龄 生日 操作
${vs.count} ${user.name} ${user.age} 修改 删除
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号