JSP使用Servlet作为控制器实现MVC模式实例详解
简介
MVC(Model-View-Controller)模式是一种常用于软件架构设计的模式,其目的是为了将应用程序分成不同的部分以便于设计和维护。其中,Model层负责处理应用程序的数据逻辑,View层负责渲染用户界面,Controller层负责控制应用程序流程和控制用户交互。
JSP(JavaServer Pages)是一种动态网页技术,也是一种基于MVC模式的Web框架。通常,JSP中的页面代码应该只包含View层的代码,而将数据逻辑和应用程序流程的代码放置在Servlet中。这样实现,既简化了JSP页面的代码,也提高了代码的复用性,并且降低了代码之间的耦合度。
本文将介绍如何使用Servlet作为控制器,来实现JSP应用程序的MVC模式设计。
实例
步骤一:创建一个Java Web项目
在Eclipse中,点击菜单“File”--“New”--“Dynamic Web Project”,输入项目名称和目录。点击“Next”确认即可。
步骤二:创建JSP页面
在Eclipse中,右键点击项目名称,选择“New”--“JSP File”,输入文件名称和目录。代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home Page</title>
</head>
<body>
<h1>Welcome to our website!</h1>
</body>
</html>
步骤三:创建Servlet控制器
在Eclipse中,右键点击项目名称,选择“New”--“Servlet”,输入类名称和目录。代码如下:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HomeController")
public class HomeController extends HttpServlet {
private static final long serialVersionUID = 1L;
public HomeController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/home.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
在Servlet中,我们使用了@WebServlet
注解来指定Servlet的URL路径。在doGet
方法中,我们使用request.getRequestDispatcher
来重定向请求到home.jsp
页面。在doPost
方法中,我们直接调用doGet
方法。这里做法比较简单,实际开发中会根据具体需求进行更加细致的处理。
步骤四:运行项目
在Eclipse中,右键点击项目名称,选择“Run As”--“Run on Server”,选择Tomcat服务器,并点击“Finish”,即可运行项目。打开浏览器,在地址栏输入http://localhost:8080/项目名称/HomeController
,即可看到如下页面:
Welcome to our website!
示例
例一:使用Servlet控制器处理请求
在本例中,我们将在home.jsp
页面中使用表单提交数据,然后由HomeController
控制器来处理数据,并将处理结果输出到result.jsp
页面。
步骤一:在home.jsp
页面中添加表单
在home.jsp
页面中添加如下代码:
<h1>Welcome to our website!</h1>
<form method="post" action="${pageContext.servletContext.contextPath}/HomeController">
<input type="text" name="name" placeholder="Your name" /><br />
<input type="submit" value="Submit" />
</form>
在表单中,我们使用method="post"
来指定表单提交方式,并使用action
属性来指定表单提交的URL。
步骤二:在HomeController
控制器中处理请求
在HomeController
中添加如下代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
request.setAttribute("name", name);
request.getRequestDispatcher("/result.jsp").forward(request, response);
}
在doPost
方法中,我们使用request.getParameter
方法来获取表单数据,并将其存储到HttpServletRequest对象中。然后,我们使用request.getRequestDispatcher
方法来重定向请求到result.jsp
页面。
步骤三:创建result.jsp
页面
在Eclipse中,右键点击项目名称,选择“New”--“JSP File”,输入文件名称和目录。代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Result Page</title>
</head>
<body>
<h1>Result:</h1>
<p>Hello, <%= request.getAttribute("name") %>!</p>
</body>
</html>
在result.jsp
页面中,我们使用EL表达式${}
来获取HttpServletRequest对象中存储的表单数据,并将其输出到页面中。
步骤四:运行项目
在Eclipse中,右键点击项目名称,选择“Run As”--“Run on Server”,选择Tomcat服务器,并点击“Finish”,即可运行项目。打开浏览器,在地址栏输入http://localhost:8080/项目名称/home.jsp
,输入姓名并提交,即可看到如下页面:
Result:
Hello, Jack!
例二:使用Servlet控制器处理业务逻辑
在本例中,我们将使用HomeController
控制器来处理业务逻辑,并将处理结果输出到result.jsp
页面。
步骤一:在home.jsp
页面中添加链接
在home.jsp
页面中添加如下代码:
<h1>Welcome to our website!</h1>
<a href="${pageContext.servletContext.contextPath}/HomeController?action=calculate">Calculate</a>
在链接中,我们使用href
属性来指定请求的URL,并添加一个action
参数来标识请求的操作类型。
步骤二:在HomeController
控制器中处理请求
在HomeController
中添加如下代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
if ("calculate".equals(action)) {
int num1 = 10;
int num2 = 20;
int result = num1 + num2;
request.setAttribute("result", result);
request.getRequestDispatcher("/result.jsp").forward(request, response);
} else {
request.getRequestDispatcher("/home.jsp").forward(request, response);
}
}
在doGet
方法中,我们首先使用request.getParameter
方法来获取请求的操作类型。然后,根据操作类型,我们执行相应的业务逻辑,将处理结果存储到HttpServletRequest对象中。最后,我们使用request.getRequestDispatcher
方法来重定向请求到result.jsp
页面。
步骤三:创建result.jsp
页面
在Eclipse中,右键点击项目名称,选择“New”--“JSP File”,输入文件名称和目录。代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Result Page</title>
</head>
<body>
<h1>Result:</h1>
<p>10 + 20 = <%= request.getAttribute("result") %></p>
</body>
</html>
在result.jsp
页面中,我们使用EL表达式${}
来获取HttpServletRequest对象中存储的数据,并将其输出到页面中。
步骤四:运行项目
在Eclipse中,右键点击项目名称,选择“Run As”--“Run on Server”,选择Tomcat服务器,并点击“Finish”,即可运行项目。打开浏览器,在地址栏输入http://localhost:8080/项目名称/home.jsp
,点击链接进行计算,即可看到如下页面:
Result:
10 + 20 = 30
总结
本文介绍了使用Servlet作为控制器来实现JSP应用程序的MVC模式设计,通过两个示例详细阐述了Servlet控制器的使用情况。掌握这种技术,既能够提高应用程序的开发效率,也能够提高代码的维护性和重用性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP使用Servlet作为控制器实现MVC模式实例详解 - Python技术站