MVC开发

    • Servlet适合编写Java代码,实现各种复杂的业务逻辑,但不适合输出复杂的HTML;
    • JSP适合编写HTML,并在其中插入动态内容,但不适合编写复杂的Java代码。

    能否将两者结合起来,发挥各自的优点,避免各自的缺点?

    答案是肯定的。我们来看一个具体的例子。

    假设我们已经编写了几个JavaBean:

    在中,我们可以从数据库读取UserSchool等信息,然后,把读取到的JavaBean先放到HttpServletRequest中,再通过forward()传给user.jsp处理:

    请注意几点:

    • user.jsp放到/WEB-INF/目录下,是因为WEB-INF是一个特殊目录,Web Server会阻止浏览器对WEB-INF目录下任何资源的访问,这样就防止用户通过/user.jsp路径直接访问到JSP页面;
    • JSP页面首先从request变量获取实例,然后在页面中直接输出,此处未考虑HTML的转义问题,有潜在安全风险。

    我们在浏览器访问,请求首先由UserServlet处理,然后交给user.jsp渲染:

    我们把UserServlet看作业务逻辑处理,把User看作模型,把user.jsp看作渲染,这种设计模式通常被称为MVC:Model-View-Controller,即UserServlet作为控制器(Controller),作为模型(Model),user.jsp作为视图(View),整个MVC架构如下:

    MVC模式广泛地应用在Web页面和传统的桌面程序中,我们在这里通过Servlet和JSP实现了一个简单的MVC模型,但它还不够简洁和灵活,后续我们会介绍更简单的Spring MVC开发。

    MVC开发 - 图1下载练习: (推荐使用IDE练习插件快速下载)

    MVC模式是一种分离业务逻辑和显示逻辑的设计模式,广泛应用在Web和桌面应用程序。

    MVC开发 - 图2