最近在云南做一个新项目,之前在湖南做项目时一直想使用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();
}
}
分享到:
相关推荐
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 系统用例图 ...
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 系统用例图 ...
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 系统用例图 ...
Spring-MVC 的“Petclinic”应用程序作为重构对象。 我们从 . 重构有三个版本: small 、 medium和large 。 每个版本都存储在此存储库中的不同分支上。 这三个分支相继建立。 每个重构的大小名称是与原始 Java-only ...
开发你的第一个Spring程序. 学习用struts MVC框架作前端,Spring做中间层,Hibernate作后端来开发一个简单的Spring应用程序。使用Spring MVC框架对它进行重构。
学习用 struts MVC 框架作前端,Spring 做中间层,Hibernate 作后端来开发一个简单的Spring 应用程序。在第4章将使用Spring MVC 框架对它进行重构。
在第4章将使用Spring MVC框架对它进行重构。 本章包含以下内容: 编写功能性测试。 配置Hibernate和Transaction。 载入Spring的applicationContext.xml文件。 设置业务代理(business delegates)和DAO的依赖性。 把...
Spring 快速入门教程──开发你的第一个Spring程序。学习用struts MVC框架作前端,Spring做中间层,Hibernate作后端来开发一个 简单的Spring应用程序。在第4章将使用Spring MVC框架对它进行重构
用户可以自由选择Struts、Spring/MVC,Webwork,Taperstry、JSF这几个web框架。采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。为了简化开发,预定义好了一套目录结构、基类、用来创建数据库...
用户可以自由选择Struts、Spring/MVC,Webwork,Taperstry、JSF这几个web框架。采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。为了简化开发,预定义好了一套目录结构、基类、用来创建数据库...
基于SpringBoot,Spring Data JPA,Shiro开发的前后端分离的拥有权限管理的工作系统.具体模块正在开发中..前端 涉及框架 后端框架: 技术 名称 官网 Spring Framework 容器 SpringMVC MVC框架 Spring Data JPA ORM框架...
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 系统用例图 ...
以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、Spring等主流框架的各种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}{...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
后续,可以用Spring+SpringMVC+MyBatis对项目进行重构。 目的:主要是了解做项目的流程,练习写代码,并不会过分着重于需求的设计。 项目亮点: 对Dao层:自己模拟了Hibernate,手写了一个小型的ORM框架。原理说到底...
优化和重构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 ...
敏捷板一个类似于简单敏捷板 此工具是为设计和重构练习而构建的。入门这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。要安装的依赖项Postgres 9.4.15Gradle 4.2.1Jetty 9.4.7构建应用....