[学习笔记]基于注解的spring3.0.x MVC学习笔记(三)
2010-08-10 16:29
567 查看
这篇不会大量的张贴代码,毕竟是自己对springMVC的学习,而不是对某一种东西作为详细解析的,好了话不多说了,近期学习springMVC换了不少东西,连日志工具也换了,采用了slf4j+logback进行日志管理,至于好处,请自行Google
如何把主流的log4j+commons-loggin更换为slf4j+logback呢,由于spring里面采用了commons-logging日志监控,所以我们需要准备以下几个包:
logback-classic.jar:改善了log4j并且实现了slf4j-log4j的代码
logback-core.jar:logback的核心代码
slf4j-api.jar:slf4j实现代码
jcl-over-slf4j.jar:代替commons-loggin类
log4j-over-slf4j.jar(可选):替换log4j。原有的log4j.properites将失效,需要转换为logback.xml
jul-to-slf4j.jar:(可选)替换jdklogging。需要在程序开始时调用SLF4JBridgeHandler.install()来注册listener。
LogBack.xml配置文件跟Log4j.xml的配置文件非常相似:
logger{100}:是限制当前日志显示内容的长度,最大为100个字符
如何使用logback+slf4j?
参考代码:
同以前使用log4j+commons-logging是一样的方式,只是换了使用slf4j的工厂类而已
用到spring配置如下:
这次开始主要对spring的每个注解用法进行详细的介绍,
SpringMVC中大部分请求都是由RequestMapping提交的,而且提交的类型有很多种,以3.0来讲一般的请求方式有以下几种
第一种:以无参的形式返回:
返回的地址是http://访问地址/项目名称/spring配置文件bean为viewResolver的prefix的值+requestMapping返回的值+suffix的值
第二种:返回一个String类型:
第三种:返回一个ModelAndView对象
第四种返回一个Map集合
使用第四种方法,可以在页面中通过调用JSTL进行取值,如下面jsp代码
第五种返回一个ModelMap类型:
使用ModelMap可以把一个多个集合存到一个属性中,可以直接在页面调用EL语言进行读取,jsp代码如下:
如何把主流的log4j+commons-loggin更换为slf4j+logback呢,由于spring里面采用了commons-logging日志监控,所以我们需要准备以下几个包:
logback-classic.jar:改善了log4j并且实现了slf4j-log4j的代码
logback-core.jar:logback的核心代码
slf4j-api.jar:slf4j实现代码
jcl-over-slf4j.jar:代替commons-loggin类
log4j-over-slf4j.jar(可选):替换log4j。原有的log4j.properites将失效,需要转换为logback.xml
jul-to-slf4j.jar:(可选)替换jdklogging。需要在程序开始时调用SLF4JBridgeHandler.install()来注册listener。
LogBack.xml配置文件跟Log4j.xml的配置文件非常相似:
<?xmlversion="1.0"encoding="UTF-8"?> <configuration> <appenderclass="ch.qos.logback.core.ConsoleAppender"name="STDOUT"> <encoder> <pattern>%d{HH:mm:ss.SSS}[%thread]%-5level%logger{100}-%msg%n </pattern> </encoder> </appender> <loggername="org.lxh.mvc.controller"level="INFO"/> <!--3rdpartyLoggers--> <loggername="org.springframework.core"> <levelvalue="info"/> </logger> <loggername="org.springframework.beans"> <levelvalue="info"/> </logger> <loggername="org.springframework.context"> <levelvalue="info"/> </logger> <loggername="org.springframework.web"> <levelvalue="info"/> </logger> <root> <levelvalue="debug"/> <appender-refref="STDOUT"/> </root> </configuration>
logger{100}:是限制当前日志显示内容的长度,最大为100个字符
如何使用logback+slf4j?
参考代码:
privateLoggerlogger=LoggerFactory.getLogger(RequestMappingStudy1.class);
同以前使用log4j+commons-logging是一样的方式,只是换了使用slf4j的工厂类而已
用到spring配置如下:
<!--对springorg.lxh包下所有注解扫描--> <context:component-scanbase-package="org.lxh"></context:component-scan> <!--支持springmvc新的注解类型详细spring3.0手册15.12.1mvc:annotation-driven--> <mvc:annotation-driven/> <!--对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析--> <beanid="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <propertyname="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <propertyname="prefix"value="/"/> <propertyname="suffix"value=".jsp"></property> </bean>
这次开始主要对spring的每个注解用法进行详细的介绍,
@RequestMapping的参数如下
/**
*@seeRequestMapping参数
*
*@paramvalue
*需要跳转的地址
*@parammehtod
*基于RestFul的跳转参数,有RequestMethod.getpost,put等
*@paramparams
*符合某个参数的时候才调用该方法
*@paramheaders
*符合头信息的时候才调用
**/
SpringMVC中大部分请求都是由RequestMapping提交的,而且提交的类型有很多种,以3.0来讲一般的请求方式有以下几种
第一种:以无参的形式返回:
/**
*无参数返回的是根据prefix前缀+@RequestMappingvalue+suffix后缀组成
*
**/
@RequestMapping("/novoid")
publicvoidnovoid(){
logger.info(this.getClass().getSimpleName()+"novoid方法被调用");
}
返回的地址是http://访问地址/项目名称/spring配置文件bean为viewResolver的prefix的值+requestMapping返回的值+suffix的值
第二种:返回一个String类型:
/**
*根据String字符串返回对应的地址prefix前缀+返回值+suffix后缀组成
**/
@RequestMapping("/string")
publicStringstring(){
logger.info("String方法调用");
return"WEB-INF/jsp/success";
}
第三种:返回一个ModelAndView对象
/**
*spring2.5的方法,返回一个ModelAndView对象,通过setViewName方法跳转到指定的页面调用addObject
*相当于调用request.setAttribute方法
**/
@RequestMapping("/modelview")
publicModelAndViewview(Modelmodel){
logger.info("view方法调用");
ModelAndViewandView=newModelAndView();
andView.setViewName("WEB-INF/jsp/success");
returnandView;
}
第四种返回一个Map集合
/**
*@see使用map作为返回值的时候是以prefix前缀+requestMapping的value+suffix后缀组成返回一个map
*,map的put方法调用相当于request.setAttribute方法
**/
@RequestMapping("/mapa")
publicMap<String,Object>mapa(ModelMapmap1){
Map<String,Object>map=newHashMap<String,Object>();
UserBeanbean=newUserBean();
bean.setId(1);
bean.setUsername("EdwardLau");
bean.setPassword("edward");
map.put("hello","worldkey");
map.put("user",bean);
returnmap;
}
使用第四种方法,可以在页面中通过调用JSTL进行取值,如下面jsp代码
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>Mapa</title>
</head>
<body>
Mapa
姓名:${user.username}
密码:${user.password}
hello:${hello}
</body>
</html>
第五种返回一个ModelMap类型:
/**
*@see返回一个ModelMap类型,返回地址根据以prefix前缀+requestMapping的value+suffix后缀组成
*ModelMap本身也拥有hashmap的方法,也可以使用addAllAttributes对一个map添加到attribute里面
**/
@RequestMapping("/map")
publicModelMapmap(){
ModelMapmap=newModelMap();
map.addAttribute("aa","bb");
map.addAllAttributes(temp());
returnmap;
}
/**
*@see临时类
*@return返回一个map类型
**/
publicMap<String,UserBean>temp(){
Map<String,UserBean>map1=newHashMap<String,UserBean>();
UserBeanbean=newUserBean();
bean.setId(1);
bean.setUsername("EdwardLau");
bean.setPassword("edward");
map1.put("user",bean);
//map1.put("hello","worldkey");
UserBeanbean1=newUserBean();
bean1.setId(2);
bean1.setUsername("EdwardLau2");
bean1.setPassword("edward");
map1.put("user1",bean1);
System.out.println(map1);
returnmap1;
}
使用ModelMap可以把一个多个集合存到一个属性中,可以直接在页面调用EL语言进行读取,jsp代码如下:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>Mapa</title>
</head>
<body>
Mapa
姓名:${user.username}
密码:${user.password}
hello:${hello}
aa:${aa}
</body>
</html>
相关文章推荐
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(四)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(二)
- Spring 学习笔记(6)—— 基于注解的配置
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(五)
- 基于annotation注解的Spring3 MVC Form Handling Example之二表单提交学习笔记
- 基于annotation注解的Spring3 MVC Page Redirection Example之三页面重定向学习笔记
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(七)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(八)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(八)
- Spring4学习笔记-AOP(基于注解的方式)
- Spring4学习笔记-AOP(基于注解的方式)
- Spring学习笔记(12.基于java的容器注解)
- Spring学习笔记-springMVC基于注解的控制器(基本概念)
- Spring学习笔记-springMVC基于注解的控制器(Demo)
- 基于注解的spring3.0.x MVC学习笔记
- Spring3.X学习笔记3-基于注解和基于Java类的配置
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(九)
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
- 基于spring source tools suite注解的spring3.0.x MVC学习笔记(二)
- spring学习笔记 -- day04 基于注解的配置