`
文章列表
<servlet> <servlet-name>springMvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</pa ...
从VelocityViewServlet到VelocityLayoutServlet   使用Velocity开发web应用时,需要在web.xml中配置一个Velocity提供的VelocityViewServlet接受处理对velocity模板(即vm文件)的forward访问。(MVC,view只是做展示,通过control,转发到view) VelocityViewServlet负责将设置在request中的attribute“读出”和模板文件进行merge形成最终的页面,向response输出显示在用户电脑上。   VelocityViewServlet是一个简单的易使用的。 ...
通过DbUnit来管理测试数据   @DataSet public class UserDAOTest extends UnitilsJUnit4 { @Test public void testFindByName() { User result = userDao.findByName("doe", "john"); assertPropertyLenientEquals("userName", "jdoe", result); } } ...
Mybatis 整合Spring 根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持。 因此由Mybatis社区自己开发了一个Mybatis-Spring用来满足Mybatis用户整合Spring的需求。   通过Mybatis-Spring整合Mybatis跟Spring MapperFactoryBean 首先,我们需要从Mybatis官网上下载Mybatis-Spring的jar包添加到我们项目的类路径下,当然也需要添加Mybatis的相关jar包和Spring的相关j ...
在pom.xml增加以下插件: <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite&g ...
搭建自己的maven私服,原因有三个: 1、maven自己的中央库访问速度比较慢,伟大的墙再一闹腾,会时断时续。 2、有些jar包由于版权原因,maven中央仓库没有,比如oracle JDBC驱动。另外也会有一些项目中用到的比较老的开源jar包, 中央仓库也没用。这种情况我们需要把jar包手动上传到私服。 3、公司自己开发的jar包并不开源,不能上传到maven中央仓库,只能部署到私服上面。   私服的数据源 私服里面绝大多数的jar包都来自另外一个私服或者中央仓库。 所以第一件事情是指定私服的数据来源。 Nexus默认设置为Maven中央仓库,但Maven中央仓库实在是太 ...
插件配置就是绑定插件,指定其预定义的参数值,来进一步调整插件目标所执行的任务。 可以通过命令行和POM中插件全局配置的形式来配置,不是所有的插件配置都可以通过命令行配置的。   1、命令行插件配置 如maven-surefire-plugin插件提供一个maven.test.skip参数、当值为true时会跳过执行测试、命令行执行方式: mvn install –Dmaven.test.skip=true mvn install 可以对比两者在控制台的输出就发现下面多了test阶段   2、POM中插件全局配置 在声明插件的时候,对此插件进行一个全局配置,后面所有使用该插件 ...
如何建立Nexus私人仓库 去nexus的bin目录,安装下nexus install。   然后确认服务是否已经安装完成。 http://localhost:8081/nexus/index.html#welcome在浏览器里输入这个连接 帐号是admin密码是admin123   repository的类型: hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。 proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。 group,仓库组,用来组合多个hosted/proxy仓库,当你的项目希望在多个repositor ...
用户可以通过两种方式调用Maven插件目标。   maven命令中,带冒号的方式是指定要执行的插件目标。不带冒号的方式是执行生命周期。   第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定 这样用户在命令行只是输入生命周期阶段而已。 例如:Maven默认将maven-compiler-plugin插件的compile目标与compile生命周期阶段绑定, 因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再根据绑定关系调用maven-compiler-plugin的compile目标。   第二种方式是直接在命令行指 ...
项目继承:项目继承是指在pom.xml中设置parent,如下:   这样项目就会从父pom中继承相关的配置,主要有以下配置: properties:自定义属性,后面会讲到 dependencies:依赖,在父pom中配置的依赖会被子模块继承。 developers and contributors:开发人员信息 plugin lists:plugin 列表,包括各个plugin 的配置,如常见的compiler plugin reports lists:报表的配置,这个是自动生成站点相关的   继承和依赖的区别 继承是会从上一级pom获取配置的,而依赖紧紧是处理CLASS ...
项目的依赖还有一个特性就是依赖管理(Dependency Management) 如果我们有一个项目,包含多个子模块,而这些子模块可能都需要用到共同的依赖, 如果将这些依赖都放置在项目的pom.xml 中,在遇到依赖升级的时候,我们调整一下 ...
Maven传递依赖 依赖的传递性。通过依赖设置解决了项目的CLASSPATH 问题,实际情况是我们依赖的项目其本身也是依赖其他的项目的, 如我依赖commons-email,而commons-email 需要依赖JavaMail 和JAF,这个时候,Maven 会自动处理这个依赖传递,会将JavaMail 和JAF 也会加入到CLASSPATH 中,通过这种传递地址,可以确保依赖的完整性,保证程序的正常运行。   maven会根据groupId和artifactId来进行依赖去重,maven最终只取一个artifact,去重多版本。(去重的依据:第一是路径最短优先,第二是声明优先), ...
Ant path 匹配原则 路径匹配原则(Path Matching) Spring MVC中的路径匹配要比标准的web.xml要灵活的多。 默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径, Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出) 这些可以组合出很多种灵活的路径模式   通配符说明 ?    匹配任何单字符 *     匹配0或者任意数量的字符 **    匹配0或者更多的目录   Spring提供了强大的Ant模式通配 ...
分层开发遵守的原则:   在action中调用多个service好,还是调用一个集成的service好呢?   解决方案: 应该是尽量调用一个service,设计业务逻辑组件时你应该对外提供一个完整的服务,比如要注册一个用户,外对应该只提供一个方法, 那么验证你注册用户是否存在的逻辑应该在这个服务中去判断,而不应该你在action中先去调用判断用户是否存在的服务,不存在再去调用注册的服务。 另一种情况就是要看你的事务从哪里开启,一般从业务逻辑层开启事务是最合理的,所以你的action如果要调用多个service,很难保证在一个事务中。   设计总结 1、上层依赖于下层,依赖 ...
注解是代码的附属信息,它遵循一个基本原则:注解不能直接干扰程序代码的运行,无论增加或删除注解,代码都能够正常运行。 Java语言解释器会忽略这些注解,而由第三方工具负责对注解进行处理。第三方工具可以利用代码中的注解间接控制程序代码的运行,它们通过Java反射机制读取注解的信息,并根据这些信息更改目标程序的逻辑,而这正是Spring AOP对@AspectJ提供支持所采取的方法。   注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种注解,定义在java.lang包中。 @Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类 ...
Global site tag (gtag.js) - Google Analytics