MVC代表模型视图和控制器。这是一种将业务逻辑, 表示逻辑和数据分开的设计模式。
控制器充当视图和模型之间的接口。控制器拦截所有传入的请求。
模型代表应用程序的状态, 即数据。它还可以具有业务逻辑。
视图表示演示, 即UI(用户界面)。
MVC(模型2)架构的优势
- 导航控制集中
- 易于维护的大型应用程序
文章图片
如果你不熟悉MVC, 请先访问Model1 vs Model2。 JSP中的MVC示例
在此示例中, 我们使用servlet作为控制器, 使用jsp作为视图组件, 使用Java Bean类作为模型。
【JSP中的MVC】在此示例中, 我们创建了5个页面:
- index.jsp从用户获取输入的页面。
- ControllerServlet.java一个充当控制器的servlet。
- login-success.jsp和login-error.jsp文件充当视图组件。
- 用于映射servlet的web.xml文件。
<
form action="ControllerServlet" method="post">
Name:<
input type="text" name="name">
<
br>
Password:<
input type="password" name="password">
<
br>
<
input type="submit" value="http://www.srcmini.com/login">
<
/form>
package com.srcmini;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ControllerServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String name=request.getParameter("name");
String password=request.getParameter("password");
LoginBean bean=new LoginBean();
bean.setName(name);
bean.setPassword(password);
request.setAttribute("bean", bean);
boolean status=bean.validate();
if(status){
RequestDispatcher rd=request.getRequestDispatcher("login-success.jsp");
rd.forward(request, response);
}
else{
RequestDispatcher rd=request.getRequestDispatcher("login-error.jsp");
rd.forward(request, response);
}
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
}
package com.srcmini;
public class LoginBean {
private String name, password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean validate(){
if(password.equals("admin")){
return true;
}
else{
return false;
}
}
}
<
%@page import="com.srcmini.LoginBean"%>
<
p>
You are successfully logged in!<
/p>
<
%
LoginBean bean=(LoginBean)request.getAttribute("bean");
out.print("Welcome, "+bean.getName());
%>
<
p>
Sorry! username or password error<
/p>
<
%@ include file="index.jsp" %>
<
?xml version="1.0" encoding="UTF-8"?>
<
web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<
servlet>
<
servlet-name>
s1<
/servlet-name>
<
servlet-class>
com.srcmini.ControllerServlet<
/servlet-class>
<
/servlet>
<
servlet-mapping>
<
servlet-name>
s1<
/servlet-name>
<
url-pattern>
/ControllerServlet<
/url-pattern>
<
/servlet-mapping>
<
/web-app>
输出量
文章图片
文章图片
文章图片
推荐阅读
- JSP中的登录和注销示例
- jsp(useBean操作标记)
- jsp(setProperty和jsp:getProperty操作标签)
- jsp(include动作标签)
- JSP动作标签
- JSP JavaBean
- 使用JSP自定义标签进行迭代
- JSP中的异常处理
- JSP自定义标签示例