MVC以及struts 1 猜想

来源:互联网 发布:centos虚拟系统管理器 编辑:程序博客网 时间:2024/06/05 16:07

Model

value包负责将数据库对象转为POJO

entity则是业务中于数据库交互的部分

form包负责将表单数据进行打包

Control

control包核心控制器,只有一个ActionServlit 负责转发调用action

action 处理业务

View

jsp


control类,暂时封装到这里,再往写应该读写xml配置文件了

package control;import java.io.IOException;import java.io.PrintWriter;import java.lang.reflect.InvocationTargetException;import java.util.logging.Logger;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import action.IAction;import action.LoginAction;import form.AbstractForm;import form.IActionForm;import form.LoginForm;public class ActionServlet extends HttpServlet {private AbstractForm form;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 某个form,填充字段数据// 不同form的字段不同// 相同的是reset,set字段validate()String path = request.getRequestURI();Logger log = Logger.getLogger("control");log.info(path);if (path.endsWith("login.do")) {String msg = fillForm(request, new LoginForm());beforeAction(request, response, msg, "login.jsp");if (msg != null) {return;}doAction(request, response, new LoginAction(), "index.jsp","login.jsp", "用户名或密码不存在");}if (path.endsWith("logout.do")) {}if (path.endsWith("showProducts.do")) {}if (path.endsWith("addProduct.do")) {}if (path.endsWith("deleteProducts.do")) {}}private String fillForm(HttpServletRequest request, AbstractForm form) {// this.form = form;form.reset();form.setParamaters(request, form);return form.validate();}private void beforeAction(HttpServletRequest request,HttpServletResponse response, String msg, String msgForwardURI)throws ServletException, IOException {if (msg != null) {request.setAttribute("msg", msg);request.getRequestDispatcher(msgForwardURI).forward(request,response);}}private void doAction(HttpServletRequest request,HttpServletResponse response, IAction action,String actionSuccessURI, String actionFailedURI,String actionFailedMsg) throws ServletException, IOException {String actionforward = action.execute();if (actionforward.equals("success")) {request.getRequestDispatcher(actionSuccessURI).forward(request,response);} else {request.setAttribute("msg", actionFailedMsg);request.getRequestDispatcher(actionFailedURI).forward(request,response);}}}


package form;public interface IActionForm {String validate();void reset();}

模版模式


package form;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.logging.Logger;import javax.servlet.http.HttpServletRequest;public abstract class AbstractForm implements IActionForm {private Field[] fileds;private Class cls;protected final void setClass(Class cls) {this.cls = cls;}protected final void fillFiledName() {fileds = cls.getDeclaredFields();}/** * field声明类型需要为string * */protected final void setParamaters1(HttpServletRequest request, Object obj) {for (Field f : fileds) {Class type = f.getType();String fname = f.getName();StringBuffer sbuffer = new StringBuffer("set");sbuffer.append(fname.substring(0, 1).toUpperCase());sbuffer.append(fname.substring(1));Logger log = Logger.getLogger("form");log.info("field:" + fname + " type:" + type + " method:" + sbuffer);Method method;try {method = cls.getDeclaredMethod(sbuffer.toString(), type);method.invoke(obj, request.getParameter(fname));} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}public final void setParamaters(HttpServletRequest request, Object obj) {setClass(obj.getClass());fillFiledName();setParamaters1(request, obj);}}

package form;public class LoginForm extends AbstractForm  {private String username;private String passwrod;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPasswrod() {return passwrod;}public void setPasswrod(String passwrod) {this.passwrod = passwrod;}public void reset() {username = "";passwrod = "";}public String validate() {if (username.equals("")) {return "用户名不能为空";}if (passwrod.equals("")) {return "密码不能为空";}return null;}}

package action;public class LoginAction implements IAction {public String execute() {return "success";}}


原创粉丝点击