做web项目是所经常提到的mvc模式。
MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
如下图:
MVC构架设计
系统将不断增加新的服务功能,从设计之初就必须考虑到支持后继的迭代开发;前期设计必须严格按照MVC思路进行设计开发,符合Mode-2标准,即以jsp做视图表现;以Servlet做业务转发;以后台java对象处理具体业务;使三者在编码时分离,以为后续开发打下良好基础。HTML+JSP+Servlet+JavaBean结构:
n JSP负责生成动态网页
n Servlet负责流程转发至对应的Action实现
n JavaBean(pojo和dao)负责业务数据模型存取
简而言之就是
使得web不同分工有了统一的规范。
同一类的动作就用同类型的后缀标记
如 *.st表示在注册登录时的操作
再用Control servlet解析出来
Control servlet
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
//得到请求的命令名字:解析出*.st请求中*所指代的字符串,即动作名字
String actionName= getActionName(request);
System.out.println("请求的是~"+actionName);
//根据请求的动作名,得到控制器servlet中配置的Action实现类名字
String actionClassName=this.getInitParameter(actionName);
System.out.println("xml中对应的配对类的名字是: "+actionClassName);
//通过工厂类创建命令对象
Action action = ActionFactory.getIns().getAction(actionClassName);
//使用动作对像处理动作,返回结果为处理后要输出的目标页面
String url = action.execute(request, response);
if (url != null){
//输出目标页面
System.out.println("目标url: "+url);
getServletContext().getRequestDispatcher(url).forward(request, response);
}
}catch(Exception ef){
ef.printStackTrace();
//出错时,返回登录页面
response.sendRedirect("login.jsp");
}
}
当然再使用这个中转的时候,就得在xml中标记转化到哪个servlet中去
即
<init-param>
<param-name>register</param-name>
<param-value>Model.register</param-value>
</init-param>
则我们要使用注册功能的话
则发送 register.st
Control servlet就会转发到
寻找类的化用
去实现
public class ActionFactory {
//单实例访问方法
public static ActionFactory getIns(){
if(null==ac){
ac=new ActionFactory();
}
return ac;
}
/**
* 根据具体的Action类名字创建Action对象
* @param actionName:具体的Action类全名
* @return :Action类型对象
*/
public Action getAction(String actionClass) {
Action actionInstance = null;
try {
Class c=Class.forName(actionClass);
actionInstance = (Action) c.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return actionInstance;
}
//不需要创建对象
private ActionFactory() { }
private static ActionFactory ac=null;
Model.register中去处理。
当然,中转的时候要中转request 和 response不然得不到完整的getParameter
所以我们也就可以创建一个自己action
/**
*系统中的命令处理器接口定义
*/
public interface Action {
/**
* 所有的具体Action实现这个接口
* @param request:请求对象
* @param response:应答对象
* @return :结果页面
*/
public String execute(HttpServletRequest request, HttpServletResponse response);
}
所以就可以简单的用mvc模式写一个在线的问答系统。
<!--EndFragment-->
- 大小: 14.7 KB
- 大小: 26.8 KB
- bbs.rar (748 Bytes)
- 描述: sql
- 下载次数: 5
分享到:
相关推荐
Struts 1的核心是ActionServlet,它作为MVC(Model-View-Controller)模式中的Controller,负责接收用户请求,调度业务逻辑,并将结果传递给视图。ActionForm用于封装用户输入,而配置文件(struts-config.xml)则...
3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型...
3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型...
3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型...
3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型...
3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型...
3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第 4 章 ASP.NET 的网页代码模型及生命周期 4.1 ASP.NET 的网页代码模型 4.1.1 创建ASP.NET 网站 4.1.2 单文件...