MVC模式和总结
2012-11-16 14:53
176 查看
register.jsp:
< %@ page contentType="text/html" pageEncoding="GB2312"%>
< jsp:useBean id="registerForm" class="org.it315.bean.RegisterFormBean"
scope="request"></jsp:useBean>
< form action="../servlet/controller" method="post">
姓名:
<input type="text" name="name"
value='<jsp:getProperty name="registerForm" property="name" />'>
< font color="red"><%=registerForm.getErrorMsg("name")%></font>
< br />
密码:
<input type="password" name="password1"
value='<jsp:getProperty name="registerForm" property="password1"/>'>
< font color="red"><%=registerForm.getErrorMsg("password1")%></font>
< br>
确认密码:
<input type="password" name="password2"
value='<jsp:getProperty name="registerForm" property="password2"/>'>
< font color="red"><%=registerForm.getErrorMsg("password2")%></font>
< br>
Email:
< input type="text" name="email"
value='<jsp:getProperty name="registerForm" property="email" />'>
< font color="red"><%=registerForm.getErrorMsg("email")%></font>
< br>
< input type="submit" name="submit" value="注册" />
< /form>
logonSuccess.jsp:
< %@ page Xlanguage="java" import="java.util.*" pageEncoding="GB2312"%>
< %
if ("logout".equals(request.getParameter("action"))) {
session.invalidate();
%>
< jsp:forward page="logon"></jsp:forward>
< %
}
if (session.getAttribute("logonUser") == null) {
%>
< jsp:forward page="logon.jsp"></jsp:forward>
< %
}
%>
< jsp:useBean id="logonUser" class="org.it315.bean.UserBean"
scope="session"></jsp:useBean>
恭喜你,登陆成功!
<br>
< jsp:getProperty property="name" name="logonUser" /><br>
< jsp:getProperty property="password" name="logonUser" /><br>
< jsp:getProperty property="email" name="logonUser" /><br>
< a href="logonSuccess.jsp?action=logout">注销</a>
< br>
< a href="logon.jsp">重新登录</a>
ControllerServlet.java:
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;
import javax.servlet.http.HttpSession;
import org.it315.bean.RegisterFormBean;
import org.it315.bean.UserBean;
import org.it315.util.DbUtil;
import org.it315.util.DbUtilException;
public class ControllerServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher rd = null;
String name = request.getParameter("name");
String password1 = request.getParameter("password1");
String password2 = request.getParameter("password2");
String email = request.getParameter("email");
RegisterFormBean registerForm = new RegisterFormBean();
registerForm.setName(name);
registerForm.setPassword1(password1);
registerForm.setPassword1(password2);
registerForm.setEmail(email);
request.setAttribute("registerForm", registerForm);
if (!registerForm.validate()) {
rd = request.getRequestDispatcher("/jsp/register.jsp");
rd.forward(request, response);
return;
}
UserBean user = new UserBean();
user.setName(name);
user.setPassword(password1);
user.setEmail(email);
try {
DbUtil db = DbUtil.getInstance();
db.insertUser(user);
} catch (DbUtilException ex) {
registerForm.setErrorMsg("name", ex.getErrorMsg("name"));
rd = request.getRequestDispatcher("/jsp/register.jsp");
rd.forward(request, response);
return;
}
HttpSession session = request.getSession();
session.setAttribute("logonUesr", user);
rd = request.getRequestDispatcher("/jsp/logonSuccess.jsp");
rd.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
DbUtil.java
import java.util.Hashtable;
import org.it315.bean.UserBean;
public class DbUtil {
private static DbUtil instance = new DbUtil();
private Hashtable users = new Hashtable();
private DbUtil() {
UserBean user1 = new UserBean();
user1.setName("zxx");
user1.setPassword("12345678");
user1.setEmail("zxx@it315.org");
users.put("zxx", user1);
UserBean user2 = new UserBean();
user2.setName("flx");
user2.setPassword("abcdefg");
user2.setEmail("flx@it315,org");
users.put("flx", user2);
}
public static DbUtil getInstance() {
return instance;
}
public UserBean getUser(String userName) {
UserBean user = (UserBean) users.get(userName);
return user;
}
public void insertUser(UserBean user) throws DbUtilException {
if (user == null) {
return;
}
String userName = user.getName();
if (users.get(userName) != null) {
DbUtilException ex = new DbUtilException();
ex.setErrorMsg("name", "username have used.");
throw ex;
}
users.put(userName, user);
}
}
DbUtilException.java:
import java.util.Hashtable;
public class DbUtilException extends Exception {
private Hashtable errors = new Hashtable();
public void setErrorMsg(String err, String errMsg) {
if ((err != null) && (errMsg != null)) {
errors.put(err, errMsg);
}
}
public String getErrorMsg(String err) {
String err_msg = (String) errors.get(err);
return (err_msg == null) ? "" : err_msg;
}
}
UserBean.java:
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserBean implements Serializable {
private String name = "";
private String password = "";
private String email = "";
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
RegisterFormBean.java
import java.util.*;
public class RegisterFormBean {
private String name = "";
private String password1 = "";
private String password2 = "";
private String email = "";
private Hashtable errors = new Hashtable();
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setPassword1(String password1) {
this.password1 = password1;
}
public String getPassword1() {
return this.password1;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public String getPassword2() {
return this.password2;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return this.email;
}
@SuppressWarnings("unchecked")
public boolean validate() {
boolean allOk = true;
if (name.trim().equals("")) {
errors.put("name", "Pleaseinput your name.");
allOk = false;
}
if (password1.length() > 10 || password1.length() < 6) {
errors.put("password1", "password must have6-10 characters.");
allOk = false;
}
if (!password2.equals(password1)) {
errors.put("password2", "passwords do not match.");
allOk = false;
}
if (!email.matches("[a-zA-ZO-9_-]+@[a-zA-ZO-9_-]+(\\.[a-zA-ZO-9_-]+)+")) {
errors.put("email", "illegal email.");
allOk = false;
}
return allOk;
}
public void setErrorMsg(String err, String errMsg) {
if ((err != null) && (errMsg != null)) {
errors.put(err, errMsg);
}
}
public String getErrorMsg(String err) {
String err_msg = (String) errors.get(err);
return (err_msg == null) ? "" : err_msg;
}
}
总结
MVC 模式设计理念分析总结:
M(model)---模型层
V(view)---视图(显示)
C(control)---控制层
MVC设计模式:是一个存在于服务器表达层的模型,它将应用分开,改变应用之间的高度耦合,其中MVC是 Model-View-Control 的简称,即模型-视图-控制器。
以连接数据库为例
(1)视图层:只作为信息的显示;
(2)控制层:对模型层中的数据库表映射的模型进行控制操作。(3)模型层:模型层对数据库映射的表进行封装。
最终到了:各施其能,互不干涉 、分工明确,效率高、维护性强,安全性高、代码重用率高,可读性强、是整个程序实现最合理的结构优化,降低了代码的臃肿
< %@ page contentType="text/html" pageEncoding="GB2312"%>
< jsp:useBean id="registerForm" class="org.it315.bean.RegisterFormBean"
scope="request"></jsp:useBean>
< form action="../servlet/controller" method="post">
姓名:
<input type="text" name="name"
value='<jsp:getProperty name="registerForm" property="name" />'>
< font color="red"><%=registerForm.getErrorMsg("name")%></font>
< br />
密码:
<input type="password" name="password1"
value='<jsp:getProperty name="registerForm" property="password1"/>'>
< font color="red"><%=registerForm.getErrorMsg("password1")%></font>
< br>
确认密码:
<input type="password" name="password2"
value='<jsp:getProperty name="registerForm" property="password2"/>'>
< font color="red"><%=registerForm.getErrorMsg("password2")%></font>
< br>
Email:
< input type="text" name="email"
value='<jsp:getProperty name="registerForm" property="email" />'>
< font color="red"><%=registerForm.getErrorMsg("email")%></font>
< br>
< input type="submit" name="submit" value="注册" />
< /form>
logonSuccess.jsp:
< %@ page Xlanguage="java" import="java.util.*" pageEncoding="GB2312"%>
< %
if ("logout".equals(request.getParameter("action"))) {
session.invalidate();
%>
< jsp:forward page="logon"></jsp:forward>
< %
}
if (session.getAttribute("logonUser") == null) {
%>
< jsp:forward page="logon.jsp"></jsp:forward>
< %
}
%>
< jsp:useBean id="logonUser" class="org.it315.bean.UserBean"
scope="session"></jsp:useBean>
恭喜你,登陆成功!
<br>
< jsp:getProperty property="name" name="logonUser" /><br>
< jsp:getProperty property="password" name="logonUser" /><br>
< jsp:getProperty property="email" name="logonUser" /><br>
< a href="logonSuccess.jsp?action=logout">注销</a>
< br>
< a href="logon.jsp">重新登录</a>
ControllerServlet.java:
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;
import javax.servlet.http.HttpSession;
import org.it315.bean.RegisterFormBean;
import org.it315.bean.UserBean;
import org.it315.util.DbUtil;
import org.it315.util.DbUtilException;
public class ControllerServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher rd = null;
String name = request.getParameter("name");
String password1 = request.getParameter("password1");
String password2 = request.getParameter("password2");
String email = request.getParameter("email");
RegisterFormBean registerForm = new RegisterFormBean();
registerForm.setName(name);
registerForm.setPassword1(password1);
registerForm.setPassword1(password2);
registerForm.setEmail(email);
request.setAttribute("registerForm", registerForm);
if (!registerForm.validate()) {
rd = request.getRequestDispatcher("/jsp/register.jsp");
rd.forward(request, response);
return;
}
UserBean user = new UserBean();
user.setName(name);
user.setPassword(password1);
user.setEmail(email);
try {
DbUtil db = DbUtil.getInstance();
db.insertUser(user);
} catch (DbUtilException ex) {
registerForm.setErrorMsg("name", ex.getErrorMsg("name"));
rd = request.getRequestDispatcher("/jsp/register.jsp");
rd.forward(request, response);
return;
}
HttpSession session = request.getSession();
session.setAttribute("logonUesr", user);
rd = request.getRequestDispatcher("/jsp/logonSuccess.jsp");
rd.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
DbUtil.java
import java.util.Hashtable;
import org.it315.bean.UserBean;
public class DbUtil {
private static DbUtil instance = new DbUtil();
private Hashtable users = new Hashtable();
private DbUtil() {
UserBean user1 = new UserBean();
user1.setName("zxx");
user1.setPassword("12345678");
user1.setEmail("zxx@it315.org");
users.put("zxx", user1);
UserBean user2 = new UserBean();
user2.setName("flx");
user2.setPassword("abcdefg");
user2.setEmail("flx@it315,org");
users.put("flx", user2);
}
public static DbUtil getInstance() {
return instance;
}
public UserBean getUser(String userName) {
UserBean user = (UserBean) users.get(userName);
return user;
}
public void insertUser(UserBean user) throws DbUtilException {
if (user == null) {
return;
}
String userName = user.getName();
if (users.get(userName) != null) {
DbUtilException ex = new DbUtilException();
ex.setErrorMsg("name", "username have used.");
throw ex;
}
users.put(userName, user);
}
}
DbUtilException.java:
import java.util.Hashtable;
public class DbUtilException extends Exception {
private Hashtable errors = new Hashtable();
public void setErrorMsg(String err, String errMsg) {
if ((err != null) && (errMsg != null)) {
errors.put(err, errMsg);
}
}
public String getErrorMsg(String err) {
String err_msg = (String) errors.get(err);
return (err_msg == null) ? "" : err_msg;
}
}
UserBean.java:
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserBean implements Serializable {
private String name = "";
private String password = "";
private String email = "";
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
RegisterFormBean.java
import java.util.*;
public class RegisterFormBean {
private String name = "";
private String password1 = "";
private String password2 = "";
private String email = "";
private Hashtable errors = new Hashtable();
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setPassword1(String password1) {
this.password1 = password1;
}
public String getPassword1() {
return this.password1;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public String getPassword2() {
return this.password2;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return this.email;
}
@SuppressWarnings("unchecked")
public boolean validate() {
boolean allOk = true;
if (name.trim().equals("")) {
errors.put("name", "Pleaseinput your name.");
allOk = false;
}
if (password1.length() > 10 || password1.length() < 6) {
errors.put("password1", "password must have6-10 characters.");
allOk = false;
}
if (!password2.equals(password1)) {
errors.put("password2", "passwords do not match.");
allOk = false;
}
if (!email.matches("[a-zA-ZO-9_-]+@[a-zA-ZO-9_-]+(\\.[a-zA-ZO-9_-]+)+")) {
errors.put("email", "illegal email.");
allOk = false;
}
return allOk;
}
public void setErrorMsg(String err, String errMsg) {
if ((err != null) && (errMsg != null)) {
errors.put(err, errMsg);
}
}
public String getErrorMsg(String err) {
String err_msg = (String) errors.get(err);
return (err_msg == null) ? "" : err_msg;
}
}
总结
MVC 模式设计理念分析总结:
M(model)---模型层
V(view)---视图(显示)
C(control)---控制层
MVC设计模式:是一个存在于服务器表达层的模型,它将应用分开,改变应用之间的高度耦合,其中MVC是 Model-View-Control 的简称,即模型-视图-控制器。
以连接数据库为例
(1)视图层:只作为信息的显示;
(2)控制层:对模型层中的数据库表映射的模型进行控制操作。(3)模型层:模型层对数据库映射的表进行封装。
最终到了:各施其能,互不干涉 、分工明确,效率高、维护性强,安全性高、代码重用率高,可读性强、是整个程序实现最合理的结构优化,降低了代码的臃肿
相关文章推荐
- MVC、MVP、MVVM模式总结
- Android开发框架模式MVC、MVP使用总结
- hibernate+spring+mvc+Easyui框架模式下使用grid++report的总结
- RCP之病人信息系统开发总结(3):MVC模式之Model层
- 【总结】 - 设计模式之MVC模式
- RCP之病人信息系统开发总结(4):MVC模式之View层—透视图
- 【IOS 开发学习总结-OC-39】★★ios开发之 MVC 模式
- RCP之病人信息系统开发总结(5):MVC模式之View层—视图
- 项目后回顾总结mvc开发模式
- RCP之病人信息系统开发总结(6):MVC模式之View层—编辑器
- RCP之病人信息系统开发总结(7):MVC模式之View层—向导
- 开发模式总结:MVC、MVP&MVVM
- 软件架构设计系列总结—10—表现层模式-MVC
- RCP之病人信息系统开发总结(8):MVC模式之View层—操作
- hibernate+spring+mvc+Easyui框架模式下使用grid++report的总结
- RCP之病人信息系统开发总结(9):MVC模式之View层—对话框
- android中的MVC,MVP和MVVM模式简单总结
- 软件架构设计系列总结—10—表现层模式-MVC
- RCP之病人信息系统开发总结(10):MVC模式之View层—首选项
- MVC 模式设计理念分析总结