六、MVC模式
✅ Model(模型)
职责:处理数据和业务逻辑。
-
负责数据的存储、读取和操作。
-
包含业务规则和逻辑。
✅ View(视图)
职责:展示界面和接收用户输入。
-
把数据以可视化的形式呈现给用户。
-
不处理业务逻辑,只负责显示。
✅ Controller(控制器)
职责:协调模型与视图,处理请求。
-
接收用户请求(如点击按钮、提交表单)。
-
调用模型处理业务逻辑。
-
控制流程并决定使用哪个视图展示结果。
七、页面提交方式
跳转方式 | 触发方式 | 是否能传值 | 传递值的方式 | 声明跳转的方法/示例 |
---|---|---|---|---|
超链接 | 点击 | 是 | URL参数(查询字符串) | <a href="targetPage.jsp?param1=value1¶m2=value2">Link</a> |
表单 | 提交(自动或编程式) | 是 | 表单字段(GET方法:URL参数;POST方法:请求体) | <form action="targetServlet" method="GET/POST">...</form> |
Forward动作 | 自动(服务器端) | 是 | 请求属性(仅在同一个请求内有效) | request.getRequestDispatcher("target.jsp").forward(request, response); |
SendRedirect | 自动(客户端重定向) | 是 | URL参数 或 Session/sessionStorage等 | response.sendRedirect("targetPage.jsp") |
RequestDispatcher | 自动(服务器端) | 是 | 请求属性(forward() )或直接包含内容(include() ) | getServletContext().getRequestDispatcher("/target").include(request, response); |
八、JSP的标签
1. <%@ page %>
:定义页面相关的属性
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"import="java.util.*, com.example.*" %>
2. <%@ include %>
:静态包含其他文件的内容
<%@ include file="path/to/file.jsp" %>
3. <jsp:include>
:动态地包含另一个资源
<jsp:include page="path/to/file.jsp"><jsp:param name="paramName" value="paramValue"/> </jsp:include>
4. <jsp:forward>
:转发请求到另一个资源
<jsp:forward page="path/to/resource.jsp"><jsp:param name="paramName" value="paramValue"/> </jsp:forward>
5. <jsp:param>
:传递参数给<jsp:include>
或<jsp:forward>
<jsp:param name="paramName" value="paramValue"/>
6. <jsp:useBean>
:查找或实例化一个JavaBean
7. <jsp:setProperty>
:设置JavaBean的属性值
8. <jsp:getProperty>
:获取JavaBean的属性值
<body><jsp:useBean id="user" class="com.example.User" scope="request"/><jsp:setProperty name="user" property="name" value="John Doe"/><jsp:setProperty name="user" property="age" value="30"/> <h1>User Information</h1><p>Name: <jsp:getProperty name="user" property="name"/></p><p>Age: <jsp:getProperty name="user" property="age"/></p> </body>
九、过滤器(Filter)
作用:用于对客户端请求和服务器响应进行预处理或后处理(比如可以省掉每个Servlet的字符编码设置)
XML配置:同Servlet
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.example.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
使用通配符*,匹配所有的请求
</filter-mapping>
需要重写三个最重要的 方法
十、监听器(Listener)
作用:ServletContextListener监听容器启动和销毁,还可以监听会话或者请求只要实现不同接口
-
ServletContextListener:监听Web应用的启动(
contextInitialized
)和关闭(contextDestroyed
)事件。 -
HttpSessionListener:监听HttpSession的创建(
sessionCreated
)和销毁(sessionDestroyed
)事件。 -
ServletRequestListener:监听ServletRequest的创建(
requestInitialized
)和销毁(requestDestroyed
)事件。 -
HttpSessionAttributeListener:监听HttpSession中属性的添加、移除或替换事件。
-
ServletContextAttributeListener:监听ServletContext中属性的添加、移除或替换事件。
实现相关接口:重写一些用到的方法
xml配置
<listener>
<listener-class>com.example.MyContextListener</listener-class>
</listener>