目录
7.1 MVC模式介绍:
MVC(Model-View-Controller)模式是一种常用的软件架构模式,它将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。模型负责封装数据和逻辑,视图负责展示数据,控制器负责接收用户输入并调用模型和视图来处理请求。
7.2 JSP中的MVC模式:
在JSP中可以使用MVC模式来组织代码,实现分层架构。
在 JSP 中,MVC 模式的实现如下:
模型(Model):一个或多个 JavaBean 对象,用于存储数据。JavaBean 主要提供简单的 setXxx 方法和 getXxx 方法,在这些方法中不涉及对数据的具体处理细节,一边增强模型的通用性。
视图(View):一个或多个 JSP 页面,其作用是向控制器提交必要的数据和显示数据。JSP 页面可以使用 HTML 标记、JavaBean 标记以及 JAVA 程序片或 JAVA 表达式来显示数据。视图的主要工作就是显示数据,对数据的逻辑操作由控制器负责。
控制器(Controller):一个或多个 servlet 对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到 JavaBean 中,然后 servlet 使用转发或重定向的方式请求视图中的某个 JSP 页面显示数据。例如让某个 JSP 页面通过使用 JavaBean 标记、JAVA 程序片或 JAVA 表达式显示控制器存储在 JavaBean 中的数据。
例如,可以使用JavaBean或servlet来实现模型层,使用JSP页面来实现视图层,使用servlet或过滤器来实现控制器层。
首先,我们创建一个JavaBean,用来封装数据和逻辑。例如,下面是一个简单的Person
类,它定义了一个name
属性:
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后,我们创建一个servlet,用来接收用户输入并调用模型和视图来处理请求。例如,下面是一个简单的HelloServlet
类,它接收用户提交的name
参数,并将其存储在request对象中,然后转发到JSP页面:
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
Person person = new Person();
person.setName(name);
request.setAttribute("person", person);
request.getRequestDispatcher("/hello.jsp").forward(request, response);
}
}
最后,我们创建一个JSP页面,用来展示数据。例如,下面是一个简单的hello.jsp
页面,它从request对象中获取person
对象,并展示其name
属性:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<%
Person person = (Person) request.getAttribute("person");
%>
Hello, <%= person.getName() %>!
</body>
</html>
7.3 模型的生命周期与视图更新:
-
7.3.1 request bean:
- request bean是一种特殊的JavaBean,它的生命周期与HTTP请求相同。可以使用
useBean
动作标记或EL表达式来创建和访问request bean。例如:
<jsp:useBean id="person" class="com.example.Person" scope="request" />
-
7.3.2 session bean:
- session bean是一种特殊的JavaBean,它的生命周期与HTTP会话相同。可以使用
useBean
动作标记或EL表达式来创建和访问session bean。例如:
<jsp:useBean id="person" class="com.example.Person" scope="session" />
-
7.3.3 application bean:
- application bean是一种特殊的JavaBean,它的生命周期与Web应用相同。可以使用
useBean
动作标记或EL表达式来创建和访问application bean。例如:
<jsp:useBean id="person" class="com.example.Person" scope="application" />