JSP入门之MVC模式

系列文章目录


目录

系列文章目录

前言

一、MVC模式介绍

二、JSP中的MVC模式

三、模型的生命周期与视图更新

四、MVC模式简单实例

总结


前言

模型-视图-控制器,简称为MVC。MVC已经成为软件设计者必须熟练使用的开发模式。


一、MVC模式介绍

MVC模式一种通过三部分构造一个软件或组件的理想办法。                                                            ①模型:用于存储数据的对象。                                                                                                        ②视图:向控制器提交所需数据、显示模型中的数据。                                                                    ③控制器:负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据做出处理,将有关结果存储到模型中,并负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。

二、JSP中的MVC模式

在JSP中,MVC模式的具体实现如下:                                                                                              ①模型:一个或多个JavaBean对象,用于存储数据就。JavaBean主要提供简单的setXxx方法和getXxx方法,在这些方法中不涉及对数据的具体处理细节,以便增强模型的通用性。                      ②视图:一个或多个JSP页面,其作用是向控制器提交必要的数据和显示数据。JSP页面可以使用HTML标记、JavaBean标记以及Java程序片或Java表达式来显示数据。视图的主要工作就是显示数据,对数据的逻辑操作由控制器负责。                                                                                          ③控制器:一个或多个servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到JavaBean中,然后servlet使用转发或重定向的方式请求视图中的某个JSP页面显示数据。

三、模型的生命周期与视图更新

在MVC模式中,由控制器servlet创建bean,并将有关数据存储到所要创建的bean中,然后servlet请求某个JSP页面使用getProperty动作标记

1.request bean

①bean的创建                                                                                                                                    用BeanClass类的某个构造方法创建bean对象。                                                                            BeanClass bean = new BeanClass();                                                                                                将所创建的bean对象存放到HttpServletRequest对象request中,并指定查找该bean的id。该步骤决定了bean为request bean。                                                                                                            request.setAttribute("keyWord",bean);                                                                                              执行上述操作,就会把bean存放到Tomcat服务器管理的内置对象pageContext中,该bean被指定的id是keyWord,生命周期是PageContext.PEQUEST_SCOPR(request).

②视图的更新                                                                                                                                      在MVC模式中,由servlet负责根据模型中的数据变化通知JSP页面更新,其手段是使用转发,即使用RequestDispatcher对象向某个JSP页面发出请求,让所请求的JSP页面显示bean中的数据。代码如下:                                                                                                                                            RequestDispatcher dispatcher = request.getRequestDispatcher("JSP页面");                                  dispatcher.forward(request,response);                                                                                              <jsp:useBean id="keyWord" class="包下的类" scope="request"/>                                                    <jsp:getProperty name="keyWord" property="bean的变量"/>            

2.session bean

①bean的创建                                                                                                                                    用BeanClass类的某个构造方法创建bean对象。                                                                            BeanClass bean = new BeanClass();                                                                                                将所创建的bean对象存放到HttpServletRequest对象seesion中,并指定查找该bean的id。该步骤决定了bean为session bean。                                                                                                            session.setAttribute("keyWord",bean);                                                                                              执行上述操作,就会把bean存放到Tomcat服务器管理的内置对象pageContext中,该bean被指定的id是keyWord,生命周期是PageContext.SESSION_SCOPR(session).

②视图的更新                                                                                                                                      在MVC模式中,由servlet负责根据模型中的数据变化通知JSP页面更新,其手段是使用转发,即使用RequestDispatcher对象向某个JSP页面发出请求,让所请求的JSP页面显示bean中的数据。代码如下:                                                                                                                                             <jsp:useBean id="keyWord" class="包下的类" scope="session"/>                                                  <jsp:getProperty name="keyWord" property="bean的变量"/>      

需要注意的是,不同用户的session bean是互不相同的,即占有不同的内存空间。

3.application bean

①bean的创建                                                                                                                                    用BeanClass类的某个构造方法创建bean对象。                                                                            BeanClass bean = new BeanClass();                                                                                                将所创建的bean对象存放到HttpServletRequest对象applictaion中,并指定查找该bean的id。该步骤决定了bean为application bean。                                                                                                    application.setAttribute("keyWord",bean);                                                                                           执行上述操作,就会把bean存放到Tomcat服务器管理的内置对象pageContext中,该bean被指定的id是keyWord,生命周期是PageContext.APPLICATION_SCOPR(application).

②视图的更新                                                                                                                                      在MVC模式中,由servlet负责根据模型中的数据变化通知JSP页面更新,其手段是使用转发,即使用RequestDispatcher对象向某个JSP页面发出请求,让所请求的JSP页面显示bean中的数据。代码如下:                                                                                                                                             <jsp:useBean id="keyWord" class="包下的类" scope="application"/>                                              <jsp:getProperty name="keyWord" property="bean的变量"/>      

需要注意的是,所有用户在同一个Web服务目录中的application bean是相同的,即占有相同的内存空间。

四、MVC模式简单实例

<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>
<jsp:useBean id="digitBean" class="ch4_Person.Bean" scope="request"></jsp:useBean>
<style>
    #textStyle {
        font-family: 宋体;
        font-size: 36px;
        color: blue
    }</style>
    <HTML><body bgcolor="#ffccff">
    <form action="computer" id="textStyle" method="post">
        <table>
            <tr><td>输入两个数:</td>
                <td><input type="text" name="numberOne" value=<%=digitBean.getNumberOne()%> size=6/></td>
                <td><input type="text" name="numberTwo" value=<%=digitBean.getNumberTwo()%> size=6/></td>
            </tr>
            <tr><td>选择运算符号:</td>
                <td><select name="operator">
                    <option value="+">+(加)</option>
                    <option value="-">+(减)</option>
                    <option value="*">+(乘)</option>
                    <option value="/">+(除)</option>
                </select></td>
                <td><input type="submit" value="提交" name="sub"/></td>
            </tr>
        </table>
        <p>
            运算结果:
            <jsp:getProperty name="digitBean" property="numberOne"/>
            <jsp:getProperty name="digitBean" property="operator"/>
            <jsp:getProperty name="digitBean" property="numberTwo"/> =
            <jsp:getProperty name="digitBean" property="result"/>
        </p>
    </form>
    </body>
    </HTML>
package ch4_Person;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Example extends HttpServlet {
    @Override
    public void init() throws ServletException {
        super.init();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Bean bean = null;
        bean = new Bean();
        req.setAttribute("digitBean",bean);
        String str1 = req.getParameter("numberOne");
        String str2 = req.getParameter("numberTwo");
        if(str1 == null || str2 == null){
            return;
        }
        if(str1.length() == 0 || str2.length() == 0){
            return;
        }
        double numberOne = Double.parseDouble(str1);
        double numberTwo = Double.parseDouble(str2);
        String operator = req.getParameter("operator");
        double result = 0;
        if(operator.equals("+")){
            result = numberOne + numberTwo;
        }
        else if(operator.equals("-")){
            result = numberOne - numberTwo;
        }
        else if(operator.equals("*")){
            result = numberOne * numberTwo;
        }
        else if(operator.equals("/")){
            result = numberOne / numberTwo;
        }
        bean.setNumberOne(numberOne);
        bean.setNumberTwo(numberTwo);
        bean.setOperator(operator);
        bean.setResult(result);
        RequestDispatcher dispatcher = req.getRequestDispatcher("test1.jsp");
        dispatcher.forward(req,resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>computer</servlet-name>
        <servlet-class>ch4_Person.Example</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>computer</servlet-name>
        <url-pattern>/computer</url-pattern>
    </servlet-mapping>
</web-app>


总结

以上就是今天要讲的内容,本文仅仅简单介绍了MVC模式的使用,要想更加深入的学习MVC模式可以参考其他人的博客。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring MVC 是一个基于 Java 的 Web 应用程序框架,它提供了一个 Model-View-Controller(MVC)架构模式的实现,使得开发 Web 应用程序更加容易和快捷。 下面是一个简单的 Spring MVC 示例: 1.创建一个 Maven 项目 2.添加相关依赖 在 pom.xml 文件中添加以下依赖: ``` <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.2.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> ``` 3.创建 Spring 配置文件 在 src/main/resources 目录下创建一个名为 `spring-config.xml` 的配置文件,并添加以下内容: ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.example" /> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans> ``` 在这个配置文件中,我们启用了 Spring MVC 的注解驱动支持,并定义了一个视图解析器,用于解析 JSP 视图文件。 4.创建 Controller 在 `com.example` 包下创建一个名为 `HelloController` 的类,并添加以下内容: ``` @Controller public class HelloController { @RequestMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello Spring MVC"); return "hello"; } } ``` 这个类使用了 `@Controller` 注解来标记它是一个控制器,同时定义了一个 `@RequestMapping` 注解,用于处理 `"/hello"` 请求。在 `hello` 方法中,我们使用 `Model` 对象来添加一个名为 `message` 的属性,并返回一个名为 `hello` 的视图名称。 5.创建 JSP 视图文件 在 `src/main/webapp/WEB-INF/jsp/` 目录下创建一个名为 `hello.jsp` 的 JSP 视图文件,并添加以下内容: ``` <!DOCTYPE html> <html> <head> <title>Hello Spring MVC</title> </head> <body> <h2>${message}</h2> </body> </html> ``` 这个视图文件使用了 `${message}` 表达式来显示控制器中添加的消息。 6.运行应用程序 在命令行中使用以下命令启动应用程序: ``` mvn tomcat7:run ``` 在浏览器中访问 `http://localhost:8080/hello`,就会看到一个包含 "Hello Spring MVC" 消息的页面。 以上就是一个简单的 Spring MVC 示例。通过这个示例,你可以了解到如何使用 Spring MVC开发 Web 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值