您的位置:首页 > 其它

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)模型层:模型层对数据库映射的表进行封装。

最终到了:各施其能,互不干涉 、分工明确,效率高、维护性强,安全性高、代码重用率高,可读性强、是整个程序实现最合理的结构优化,降低了代码的臃肿
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: