月度归档:2017年03月

mvc:annotation-driven与context:annotation-config

是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。
会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
后面,我们处理响应ajax请求时,就使用到了对json的支持。
后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试,取的时候要知道是这一句注册的这两个bean。

<context:annotation-config> declares support for general annotations such as @Required, @Autowired, @PostConstruct, and so on.
<mvc:annotation-driven /> is actually rather pointless. It declares explicit support for annotation-driven MVC controllers (i.e.@RequestMapping, @Controller, etc), even though support for those is the default behaviour.
My advice is to always declare <context:annotation-config>, but don't bother with <mvc:annotation-driven /> unless you want JSON support via Jackson.

当我们需要controller返回一个map的json对象时,可以设定
同时设定 标签,设定字符集和json处理类,例如:

<mvc:annotation-driven>
    	<mvc:argument-resolvers>
        	<bean class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
        		<property name="pageParameterName" value="page.number" />
            	<property name="sizeParameterName" value="page.size" />
        	</bean>
    	</mvc:argument-resolvers>
    	<mvc:message-converters register-defaults="true">
		    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
		      <property name="supportedMediaTypes" value = "text/html;charset=UTF-8" />
		    </bean>
		</mvc:message-converters>
    </mvc:annotation-driven>

Tomcat的调试的另一种方式

1.进入调试对话框

2.在调试对话框中,选择Apache的Tomcat v7.0。

3.完成Tomcat的配置并进入下一步

4.检查调试配置,并完成。

5.若显示以下对话框,请耐心等待(第一次操作时由于本地没有缓存,会配置时间稍长一点,第二次操作后,会快很多)。

6.正常运行,显示如下:

修改项目展示结构

默认eclipse的项目结构是扁平结构的。
由于eclipse的项目管理不能像IDEAJ的那样,可以在不同的窗口中打开不同的项目,故在多个项目下扁平展示结构,容易导致一些混乱,故建议修改它。
多个项目下,默认的项目结构展示方式及修改后结果

指定JDK的编译版本

eclipse-4.6.2版本,默认JDK的编译版本是1.8,故在编译目标平台为JDK1.7.x的时候,需要修改其编译版本,否则在导入工程时,会导致导入后的工程默认JAVA编译版本为1.8。

此外,仍然要添加1.7.x的已经安装版本。如下图

至此,仍有一些特殊,如使用Gradle,也需要同步修改导入的JDK版本,才能正常编译与调试,否则会出错,如下图。


按道理应该是可以在build.gradle中指定编译版本,但发现网上说的方法,均在导入项目过程中报脚本属性错误,估计网上的方法是适用于Android版本。

形如:
sourceCompatibility = "1.6"
targetCompatibility = "1.6"

@ResponseBody和ResponseEntity

@RequestMapping(value="/response", method=RequestMethod.GET)
public class ResponseController {
 
//http://127.0.0.1:8010/response/annotation
	@RequestMapping("/annotation")
	public @ResponseBody String responseBody() {
		return "The String ResponseBody";
	}
 
 
	@RequestMapping("/charset/accept")
	public @ResponseBody String responseAcceptHeaderCharset() {
		return "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01 (\"Hello world!\" in Japanese)";
	}
 
//http://127.0.0.1:8010/response/charset/produce
	@RequestMapping(value="/charset/produce", produces="text/plain;charset=UTF-8")
	public @ResponseBody String responseProducesConditionCharset() {
		return "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01 (\"Hello world!\" in Japanese)";
	}
 
//http://127.0.0.1:8010/response/entity/status
	@RequestMapping("/entity/status")
	public ResponseEntity<String> responseEntityStatusCode() {
		return new ResponseEntity<String>("The String ResponseBody with custom status code (403 Forbidden)",
				HttpStatus.FORBIDDEN);
	}
 
//http://127.0.0.1:8010/response/entity/headers
	@RequestMapping("/entity/headers")
	public ResponseEntity<String> responseEntityCustomHeaders() {
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.TEXT_PLAIN);
		return new ResponseEntity<String>("The String ResponseBody with custom header Content-Type=text/plain",
				headers, HttpStatus.OK);
	}
 
}

eclipse搭建gradle与springMVC的框架及Tomcat调试

经实际验证,发现eclipse-4.5.2版本,如果JDK只是1.7.x的版本,在安装STS离线包时,会跳过Spring的相关安装,故需要检查JDK是否为1.8.x版本。

——————————–
下载eclipse,不建议下载最新版本,因为很多外围辅助插件没有及时升级至最新版本的。如SpringMVC为例。
1.打下如下链接,下载STS的最新离线包版本,(可以通过eclipse来在线安装,但下载比较慢也容易失败。)

http://spring.io/tools/sts/all


2.下载相应的eclipse-for-jee,如果官网没有显示与之匹配的版本下载,则你需要尝试链接测试。

http://eclipse.stu.edu.tw/technology/epp/downloads/release/neon/2/eclipse-jee-neon-2-win32-x86_64.zip

3.或者你可以尝试以下地址,也就是从上述的下载地址猜测出的所有版本下载地址(也有可能会失效,但你可以仍然通过某一完整下载地址尝试测试)。

http://eclipse.stu.edu.tw/technology/epp/downloads/release/


4.打开刚下载的eclipe-4.6.2,help->install new software,打开如下安装对话框,选择你的离线包。

5.安装完成后,会提示重启,重启后,将可看到Gradle和Spring的相关项目如下。

File->New->Project


6.安装Tomcat,路径:Window->Preference。

7.测试Tomcat


8.添加并选择默认的项目JDK。