`
json20080301
  • 浏览: 162482 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

利用spring mvc,hibernate重构系统(1)

阅读更多

最近在云南做一个新项目,之前在湖南做项目时一直想使用JDK 5的注解特性来简化繁琐的XML配置;这次做项目终于用上spring mvc 及 jpa啦。

1.web.xml中加入如下代码片段

   <!-- SPRING annomvc -->
  <servlet>
   <servlet-name>annomvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatchServlet</servlet-class>
   <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/context/spring-annomvc.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
   <servlet-name>annomvc</servlet-name>
   <url-pattern>*.mvc</url-pattern>
  </servlet-mapping>

 

 

2.spring-annomvc.xml中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd"  >
 <!-- 扫描ANNOTATION 注入的ACTION -->
 <context:component-scan base-package="com.linkage" />
  
 <!-- 异常捕获 -->
 <bean id="exceptionResolver"
  class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  <property name="exceptionMappings">
   <props>
    <prop key="java.lang.Exception">common/error</prop>
   </props>
  </property>
 </bean>

 <!-- URL 映射处理 -->
 <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
  <property name="interceptors">
    </property>
  <property name="caseSensitive" value="true" />
 </bean>

 <!-- 视图解析-->
 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/" /> <!-- /WEB-INF/jsp/ -->
  <property name="suffix" value=".jsp" />
 </bean>

</beans>

 

3.所有ActionController 文件的基类

public class BaseActionController extends MultiActionController {
 protected final Log log = LogFactory.getLog(getClass());

 private static String RESULT_PAGE = "/common/resultPage"; // .jsp
 private static String JSON_PAGE = "/common/ajaxJson"; // .jsp

 protected static String MOD = "MOD"; //修改
 
 protected static String DEL = "DEL"; //删除
 
 protected static String ADD = "ADD"; //新增
 
 protected static String JSONRESULT = "jsonResult" ;// JSON返回值
 
 
 private String jspPkg;

 public String getJspPkg() {
  return jspPkg;
 }

 public void setJspPkg(String jspPkg) {
  this.jspPkg = jspPkg;
 }

 public BaseActionController() {
  super();
  if (this.getClass().isAnnotationPresent(JspPkg.class)) {
   JspPkg jspPkgAnnotation = this.getClass().getAnnotation(JspPkg.class);
   jspPkg = jspPkgAnnotation.value();
  }
 }

 public BaseActionController(Object delegate) {
  super(delegate);
 }


 /**
  * 转向默认JSP页面
  * @param request
  * @return
  * @throws NoSuchRequestHandlingMethodException
  */
 protected ModelAndView getDefaultView(HttpServletRequest request) throws NoSuchRequestHandlingMethodException {
  String viewName = this.getMethodNameResolver().getHandlerMethodName(request);
  String dir = this.getJspPkg();
  ModelAndView view =  CmsDispatchServlet.getModelAndView();
  view.setViewName(dir + viewName);
  log.debug("JSP Name :" + view.getViewName() +".jsp");
  return view;
 }
 
 /**
  * 如果没有指定viewName,则转向默认JSP
  * @param request
  * @return
  * @throws NoSuchRequestHandlingMethodException
  */
 protected ModelAndView getReqView(HttpServletRequest request) throws NoSuchRequestHandlingMethodException {
  String viewName = request.getParameter("viewName");
  String handlerMethodName = this.getMethodNameResolver().getHandlerMethodName(request);
  viewName  =  (viewName==null) ? handlerMethodName:viewName ;
  String dir = this.getJspPkg();
  ModelAndView view =  CmsDispatchServlet.getModelAndView();
  view.setViewName(dir + viewName);
  log.debug("JSP Name :" + view.getViewName() +".jsp");
  return view;
 }

 /**
  * 程序员可直接指定JSP的绝对路径
  * @param request
  * @return
  * @throws NoSuchRequestHandlingMethodException
  */
 protected ModelAndView getCustomView(String viewName) {
  ModelAndView view = CmsDispatchServlet.getModelAndView();
  view.setViewName(viewName);
  log.debug("JSP Name :" + view.getViewName() +".jsp");
  return view;
 }

 /**
  * AJAX调用时转向的JSP
  * @return
  */
 protected ModelAndView getJSONPage() {
  return getCustomView(JSON_PAGE);
 }

 /**
  * 指向IFRAME回调页面
  * @return
  */
 protected ModelAndView getResultPage() {
  return getCustomView(RESULT_PAGE);
 }
}

 

另外注解标注 ActionController 对应的JSP目录

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface JspPkg {
 
 public String value();

}

 

4.BaseActionController 的子类  //访问该类的方法 http://localhost:7001/user2/view.mvc

package com.linkage.demo.web.action;

import java.util.HashMap;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;

import com.linkage.util.cache.resource.RptResourceCache;
import com.linkage.util.cache.resource.model.ServiceConfig;
import com.linkage.util.cache.resource.service.ServiceConfigManager;
import com.linkage.util.jdbc.QryCenter;
import com.linkage.util.jdbc.ServiceUtil;
import com.linkage.util.web.WebUtil;
import com.linkage.util.web.action.BaseActionController;
import com.linkage.util.web.annotation.JspPkg;

@Controller
@JspPkg(value = "/demo/")
public class User2Controller extends BaseActionController {

 public ModelAndView view(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  JSONObject jo = new JSONObject();
  request.setAttribute("jsonResult", jo.toString());
  request.setAttribute("jsonResult", inputValue);

   return this.getJSONPage();
 }

 

0
0
分享到:
评论

相关推荐

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    仿知乎java源码-refactoring-to-rails:将Spring/Hibernate应用程序重构为Rails的示例

    Spring-MVC 的“Petclinic”应用程序作为重构对象。 我们从 . 重构有三个版本: small 、 medium和large 。 每个版本都存储在此存储库中的不同分支上。 这三个分支相继建立。 每个重构的大小名称是与原始 Java-only ...

    Spring快速入门教程

    开发你的第一个Spring程序. 学习用struts MVC框架作前端,Spring做中间层,Hibernate作后端来开发一个简单的Spring应用程序。使用Spring MVC框架对它进行重构。

    Spring基础教程

    学习用 struts MVC 框架作前端,Spring 做中间层,Hibernate 作后端来开发一个简单的Spring 应用程序。在第4章将使用Spring MVC 框架对它进行重构。

    Spring 快速入门教程

    在第4章将使用Spring MVC框架对它进行重构。 本章包含以下内容: 编写功能性测试。 配置Hibernate和Transaction。 载入Spring的applicationContext.xml文件。 设置业务代理(business delegates)和DAO的依赖性。 把...

    spring入门教程

    Spring 快速入门教程──开发你的第一个Spring程序。学习用struts MVC框架作前端,Spring做中间层,Hibernate作后端来开发一个 简单的Spring应用程序。在第4章将使用Spring MVC框架对它进行重构

    AppFuse学习笔记(J2EE入门级框架)

    用户可以自由选择Struts、Spring/MVC,Webwork,Taperstry、JSF这几个web框架。采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。为了简化开发,预定义好了一套目录结构、基类、用来创建数据库...

    appfuse 学习笔记

    用户可以自由选择Struts、Spring/MVC,Webwork,Taperstry、JSF这几个web框架。采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。为了简化开发,预定义好了一套目录结构、基类、用来创建数据库...

    ssm-web-project:基于Spring全家桶的简单的后台管理系统

    基于SpringBoot,Spring Data JPA,Shiro开发的前后端分离的拥有权限管理的工作系统.具体模块正在开发中..前端 涉及框架 后端框架: 技术 名称 官网 Spring Framework 容器 SpringMVC MVC框架 Spring Data JPA ORM框架...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    JAVA程序开发大全---上半部分

    以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、Spring等主流框架的各种Java应用程序。...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    百度地图开发java源码-TypicalWebProject:一个典型的JavaWeb项目

    后续,可以用Spring+SpringMVC+MyBatis对项目进行重构。 目的:主要是了解做项目的流程,练习写代码,并不会过分着重于需求的设计。 项目亮点: 对Dao层:自己模拟了Hibernate,手写了一个小型的ORM框架。原理说到底...

    Maven权威指南 很精典的学习教程,比ANT更好用

    优化和重构POM 8.1. 简介 8.2. POM清理 8.3. 优化依赖 8.4. 优化插件 8.5. 使用Maven Dependency插件进行优化 8.6. 最终的POM 8.7. 小结 II. Maven Reference 9. 项目对象模型 9.1. 简介 9.2. POM ...

    敏捷板:专为Java设计练习而构建的项目管理工具

    敏捷板一个类似于简单敏捷板 此工具是为设计和重构练习而构建的。入门这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。要安装的依赖项Postgres 9.4.15Gradle 4.2.1Jetty 9.4.7构建应用....

Global site tag (gtag.js) - Google Analytics