首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

论文骨材【转载】

2012-08-25 
论文素材【转载】Excerpt From http://hi.baidu.com/gabe2008/blog/item/65eb33a66066979dd043584a.html7)MV

论文素材【转载】
Excerpt From
http://hi.baidu.com/gabe2008/blog/item/65eb33a66066979dd043584a.html

7)MVC模块

      Spring WebMVC模块建立在Spring核心功能之上,这使它能拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离。说说MVC在JSP的作用吧。请看下图。

        这里引入了“控制器”这个概念,控制器一般由Servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。因此,这个Servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式。实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。


http://book.51cto.com/art/200708/53965.htm


http://www.ibm.com/developerworks/cn/java/j-lo-freemarker/index.html

printWriter是什么东西?

PrintWriter out = response.getWriter();当一个Servlet响应的时候将响应信息通过out对象输出到网页上,当响应结束时它自动被关闭。所以也可以理解为:当我们调用response.getWriter()这个对象同时获得了网页的画笔,这时你就可以通过这个画笔在网页上画任何你想要显示的东西。

response.getWriter()和response.getOutputStream()这两个方法中只能调用其中一个,并且只能调用一次,不可以重复调用


HTTPSERVLET是什么东西


HttpServlet类的功能
提供一个抽象类,扩展该类可以创建一个适合http servlet的网站。

工作流程
1、接收客户端的请求
2、处理请求
3、向客户端发送响应

1、接收客户端的请求
1.1 从form中接收请求:
<form action="helloWebWorld.action" method="post">
<p><input type="submit" value="Hello!" /></p>
</form>


1.2 在web.xml文件中进行配置:

    <servlet>
        <servlet-name>webwork</servlet-name>
        <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>webwork</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

2、处理请求
2.1 进行初始化工作
初始化工作由init方法进行

2.2 处理请求
这里由service方法处理,service方法根据请求的类型,调用相应的方法进行处理。下面是一个例子:
public void service( ServletRequest req, ServletResponse res )
  throws ServletException, IOException{
   HttpServletRequest request;
  HttpServletResponse response;
  try{
   request = (HttpServletRequest)req;
   response = (HttpServletResponse)res;
   String m = request.getMethod();
   if(m.equals("POST")){
    doPost(request,response);
   } else if(m.equals("GET")){
    doGet(request,response);
   }
  }catch( ClassCastException e ){
   //不是http请求。
  }
}

public void doGet( HttpServletRequest req, HttpServletResponse resp )
  throws ServletException, IOException{
   resp.getWriter().write("您使用 Get 方法请求该 servlet。");
}

public void doPost( HttpServletRequest req, HttpServletResponse resp )
  throws ServletException, IOException{
   resp.getWriter().write("您使用 Post 方法请求该 servlet。");
}

2.3 收尾工作
此工作由destroy完成。一般不必重写


3、向客户端发送响应
对客户端响应一般由doGet,doPost等方法进行,参考2.2的代码。



FreeMarker 里的TemplateModel是什么

FreeMarker 的数据模型(root 状模型)可以使用标准的java 类(Map,String 等等)
来表示。在其内部,FreeMarker 使用的数据模型其实是――――――――――――――――
实现了freemarker.template.TemplateModel 接口的对象。但是你却可以使用诸如
java collections 对象作为你的数据模型,这是因为这些数据模型通常会被(FreeMarker)
在内部转换成TemplateModel 类型的对象。这种功能呢就叫做object wrapping。它可
以透明地把任意对象转化成TemplateModel 接口类型的实例。例如,它可以转换
java.sql.ResultSet 对象,也可以转变javax.servlet.ServletRequest 对象,
甚至可以转化XML 文档表示的数据模型。
但是你在转换这些对象的时候,必须选取适合的包裹类(Wrapper,这些包裹类来实现
普通对象到TemplateModel 对象的转化工作,但你也可以自己定制一些Wrapper)。既
然模版可以访问的数据模型必须都是转化成TemplateModel 后的对象,所以你首先应该
熟悉各个实现TemplateModel 接口的子类。
TemplateModel 主要有三个子类,每一个子类分别表示一种FreeMarker 的基本类型,
比如hashes 类型用TemplateHashModel 表示, sequence 类型实现用
TemplateSequenceModel 来表示,numbers 类型用TemplateNumberModel 来表示,
另外,自己也可以定制其他的数据模型的转化。
举个例子,如果你想转化java.sql.ResultSet 为sequence,那么你只需要写一个
实现了TemplateSequenceModel 接口的对象,并且该对象可以读取ResultSet 然后并把
其转换成相应的TemplateModel,其实你要做的仅仅是生成一个ResultSet 的包装类,并
且继承TemplateSequenceModel 接口。注意:一个类可以实现多个TemplateModel
类型的接口,这也就是为什么FreeMarker 的变量会有多种的原因。
注意:在包freemarker.template 中提供了以上这些接口的默认实现。例如,你要
转换一个String 类型那么你直接可以使用SimpleScalar,同样要转换一个Map 类型你可
以使用SimpleScalar,诸如此类等等。
如果你放置到root 数据模型中的对象本身就是实现了TemplateModel 接口的实
例,那么Object Wrapper 并不会去对该对象进行任何转换。

热点排行