posts - 60, comments - 116, trackbacks - 1, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

单独使用Spring建立简易开发框架(二)

Posted on 2007-09-11 18:05 匪客 阅读(1990) 评论(2)  编辑  收藏 所属分类: 开发技术

3. 架构概览

MVC 层在 Spring AbstractController 类基础上进行了继承和重构,使整个框架仅使用单一的公共控制器,数据操作采用 Spring JdbcTemplate ,在逻辑层中直接集成了 Spring Jdbc 能力,可直接操作数据,表现层 Jstl ,除此之外,未定义任何的表单对象、数据库表映射对象和其他 ORM 的配置文件,在保留对关键功能的集成度的基础上技术入门度极低,重点关注业务功能和优化 SQL 语句

请求处理流传如图所示:



1)      用户访问 http://www.fyyk.com/a.do

2)      Web 应用服务器(如 tomcat )解析扩展名为 *.do 的请求,通过 Spring 分发器 org.springframework.web.servlet.DispatcherServlet 读取 servlet-do.xml 中的配置,将请求转发给公共控制器类 LogicController.java

3)      公共控制器类 LogicController.java 根据 servlet-do.xml 文件中的配置信息调用 DoLogicImpl.java 类中相对应名称的方法;

4)      DoLogicImpl.java 类中的方法在处理完成业务逻辑后,将数据内容 ModelAndView 返回给公共控制器类 LogicController.java

5)      公共控制器类 LogicController.java 处理 ModelAndView 信息,执行 b.jsp 将结果数据显示出来;

3.1. 控制器 Controller




  控制器类配置在

servlet-xxx.xml 文件中,封装后的 Controller 特点如下:

1)    继承 AbstractController 类,便于调用应用环境的 Web 特性;

2)   只用控制器做请求的转发,业务实现全部在逻辑层;

3)      采用反映射机制( reflect ),运行期调用逻辑类中的方法,而请求 URI 、逻辑类和方法名之间的对应关系只需要在 servlet-xxx.xml 中配置,这样,控制器实现就只有唯一的一个类文件;

3.2. 逻辑层 Logic




  逻辑层类在

applicationContext-xxx.xml 文件配置 Bean 定义中,主要实现两项功能:一是处理业务逻辑,二是操作数据库;

逻辑层类首先需要定义一个接口类,统一以 xxxLogic.java 命名,实现类命名为 xxxLogicImpl.java ,并继承 JdbcDaoSupport 类,这样逻辑类便具有了数据库访问能力。

逻辑类的方法如果被公共控制器类 LogicController.java 的反映射机制直接调用,则其接口类需要继承空的公共接口类 BasicLogic ,定义方法时参数和返回值是固定的,如果是被其他逻辑类调用则不需要。

public ModelAndView initLogin(HttpServletRequest request, HttpServletResponse response, ServletContext servletContext);

控制器层直接将请求的 request response servletContext 全部传递过来交由逻辑层自由控制,对于 request 中的表单数据,未采用 SimpleFormController 的模式定义表单对象,建议手工获取,从代码量本身来将并不复杂,反而更加灵活。在业务处理完成后,必须构造一个 ModelAndView 对象,作为方法返回值回传给控制器。

范例代码如下:

public class AdminLogicImpl extends JdbcDaoSupport implements AdminLogic

{

 

public ModelAndView insertUser(HttpServletRequest request, HttpServletResponse response,

    ServletContext servletContext) throws DataAccessException

    {

         String userId = request.getParameter("userId");

         String userName = request.getParameter("userName");

         int age = Integer.parseInt(request.getParameter("age"));

         double weight = Double.parseDouble(request.getParameter("weight"));

 

         String sqlStr = "insert into testuser (userId,username,age,weight,updatetime) values (?,?,?,?,?)";

         Object[] object = new Object[]{userId, userName, age, weight, new Date()};

         getJdbcTemplate().update(sqlStr, object);

 

        Map<String, Object> model = new HashMap<String, Object>();

         model.put("msg", " 插入用户成功! ");

        model.put("url", "pageForm.user");

         String view = "admin/message.jsp";

         return new ModelAndView(view, model);

    }

}

3.3. 表现层 Jstl

表现层采用 Jstl taglib 1.2 ,在 *.jsp 页面中加入 taglib 引用即可使用 Jstl 标签的大部分功能了,标签的具体使用方法请参考相关文档。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>


评论

# re: 单独使用Spring建立简易开发框架(二) [未登录]  回复  更多评论   

2007-09-11 18:19 by david
你好, 可以给个例子看一下吗?
Email: wst0350@163.com
QQ : 276527668

# re: 单独使用Spring建立简易开发框架(二) [未登录]  回复  更多评论   

2007-09-11 21:10 by john
en

只有注册用户登录后才能发表评论。


网站导航: