[学习笔记]基于注解的spring3.0.x MVC学习笔记(二)
2010-07-23 14:42
676 查看
用惯了maven管理项目之后会发现自己懒惰了很多,所以决定放弃使用maven去学习spring3的mvc,采用传统的webproject进行学习,好了闲话不说,首先我们需要知道springmvc需要加什么包.
使用到springmvc的需要加入以下依赖包:
org.springframework.aop-3.0.3.RELEASE.jar--------------Spring的切面编程
org.springframework.asm-3.0.3.RELEASE.jar--------------Spring独立的asm程序
org.springframework.beans-3.0.3.RELEASE.jar------------SpringIoC(依赖注入)的基础实现
org.springframework.context-3.0.3.RELEASE.jar-----------Spring提供在基础IoC功能上的扩展服务
org.springframework.core-3.0.3.RELEASE.jar--------------Spring的核心包
org.springframework.expression-3.0.3.RELEASE.jar------Spring表达式语言
org.springframework.web-3.0.3.RELEASE.jar--------------SpringWeb下的工具包
org.springframework.web.servlet-3.0.3.RELEASE.jar-----SpringMVC工具包,并且对JEE6.0Servlet3.0的支持
除了spring的包之外还需要加入以下几个依赖包:
com.springsource.org.aopalliance-1.0.0.jar---------------aop的工具包
com.springsource.org.apache.commons.logging-1.1.1.jar----------commons的日志管理
本文使用了slf4j日志管理,所以需要加入以下包
slf4j-api-1.5.10.jar--------------------------------------------日志管理的增强
slf4j-log4j12-1.5.10.jar---------------------------------------日志包的连接层
所有包如图1springmvc需要的包:
<log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/">
<!--Appenders-->
<appendername="console"class="org.apache.log4j.ConsoleAppender">
<paramname="Target"value="System.out"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%-5p:%c-%m%n"/>
</layout>
</appender>
<!--ApplicationLoggers-->
<loggername="org.lxh.mvc.controller">
<levelvalue="debug"/>
</logger>
<!--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>
<!--RootLogger-->
<root>
<priorityvalue="info"/>
<appender-refref="console"/>
</root>
</log4j:configuration>[/code]
springmvc.xml
如果需要使用jstl的话则需要在<property>标签中加入
prefix:则为前缀,也就是目录的地址,一般以"WEB-INF/xx"为主,若为"/"则为全局使用
suffix:则为后缀,也就是文件名的后缀.使用InternalResourceViewResolver类是只支持jsp,不支持html等其他后缀,如果强制加入其他后缀的话胡出现死循环,至于其他视图的话则以后在使用的时候再介绍
web.xml
注意:配置spring的DispatcherServlet的时候,如果需要使用自定义名字的spring配置文件的话,需要在<serlvet>中加入<init-param>这个参数,否则的话spring会默认查找web-inf/classes下面以[servlet-name]-servlet.xml的文件,会出现以下错误:
ERROR:org.springframework.web.servlet.DispatcherServlet-Contextinitializationfailed
org.springframework.beans.factory.BeanDefinitionStoreException:IOExceptionparsingXMLdocumentfromServletContextresource[/WEB-INF/SpringMVCDispatchServlet-servlet.xml];nestedexceptionisjava.io.FileNotFoundException:CouldnotopenServletContextresource[/WEB-INF/SpringMVCDispatchServlet-servlet.xml]
HelloWordController.java:
可以发现上面为什么有那么多注释,
先一个一个来说明,springmvc可以通过以下三种方式链接到视图解析器中,每种方法以requestMapping注解作为跳转.
第一种,使用无返回方法跳转,如果使用返回方法进行跳转的话,则会通过视图解析器进行以prefix(前缀)+方法名+suffix(后缀)组成的页面文件名称.这样的话可能需要用urlwriter框架进行重向地址更改,保证安全性.
第二种,使用一个返回的字符串方法作为跳转,使用字符串跳转的话好处就是在return的时候可以自己指定返回的名字,JSP组成是prefix(前缀)+返回的字符串+suffix(后缀),这样的话跳转的时候外围广很多而且,安全性相对高点
第三种,返回一个ModelAndView类型,ModelAndView是spring2.5经常使用的方式,使用setViewName方法则可以跳转到指定的页面.
在类中还还发现一个Contorller的注解,该注解是用于把当前Java类变成一个Spring里面的一个beans,如果在Class上面加入requestMapping的话,而在方法上还拥有requestMapping,则在浏览器输入的地址为http://访问地址:端口/contextroot/要调用类的requestMapping跳转值/该类中存在的requestMapping/,而在Class上标记了requestMapping的话,则需要在指定的位置创建一个文件夹作为存放.
例如:
输入http://localhost:8080/SpringMVC_10000/test/hello的话则会查找根目录下面的test文件夹下面的hello.jsp.组成是prefix(前缀)+/test/+方法名+suffix(后缀).目录结构如图2:
36C40D3C.png?download&psid=1]
图2:跳转目录
使用到springmvc的需要加入以下依赖包:
org.springframework.aop-3.0.3.RELEASE.jar--------------Spring的切面编程
org.springframework.asm-3.0.3.RELEASE.jar--------------Spring独立的asm程序
org.springframework.beans-3.0.3.RELEASE.jar------------SpringIoC(依赖注入)的基础实现
org.springframework.context-3.0.3.RELEASE.jar-----------Spring提供在基础IoC功能上的扩展服务
org.springframework.core-3.0.3.RELEASE.jar--------------Spring的核心包
org.springframework.expression-3.0.3.RELEASE.jar------Spring表达式语言
org.springframework.web-3.0.3.RELEASE.jar--------------SpringWeb下的工具包
org.springframework.web.servlet-3.0.3.RELEASE.jar-----SpringMVC工具包,并且对JEE6.0Servlet3.0的支持
除了spring的包之外还需要加入以下几个依赖包:
com.springsource.org.aopalliance-1.0.0.jar---------------aop的工具包
com.springsource.org.apache.commons.logging-1.1.1.jar----------commons的日志管理
本文使用了slf4j日志管理,所以需要加入以下包
slf4j-api-1.5.10.jar--------------------------------------------日志管理的增强
slf4j-log4j12-1.5.10.jar---------------------------------------日志包的连接层
所有包如图1springmvc需要的包:
<log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/">
<!--Appenders-->
<appendername="console"class="org.apache.log4j.ConsoleAppender">
<paramname="Target"value="System.out"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%-5p:%c-%m%n"/>
</layout>
</appender>
<!--ApplicationLoggers-->
<loggername="org.lxh.mvc.controller">
<levelvalue="debug"/>
</logger>
<!--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>
<!--RootLogger-->
<root>
<priorityvalue="info"/>
<appender-refref="console"/>
</root>
</log4j:configuration>[/code]
springmvc.xml
<!--对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="prefix"value="/"/> <propertyname="suffix"value=".jsp"></property> </bean>
如果需要使用jstl的话则需要在<property>标签中加入
<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>
prefix:则为前缀,也就是目录的地址,一般以"WEB-INF/xx"为主,若为"/"则为全局使用
suffix:则为后缀,也就是文件名的后缀.使用InternalResourceViewResolver类是只支持jsp,不支持html等其他后缀,如果强制加入其他后缀的话胡出现死循环,至于其他视图的话则以后在使用的时候再介绍
web.xml
<servlet> <description>ThisisSpringMVCDispatcherServlet</description> <servlet-name>SpringMVCDispatchServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <description>SpringContext</description> <param-name>contextConfigLocation</param-name> <param-value>classpath*:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVCDispatchServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
注意:配置spring的DispatcherServlet的时候,如果需要使用自定义名字的spring配置文件的话,需要在<serlvet>中加入<init-param>这个参数,否则的话spring会默认查找web-inf/classes下面以[servlet-name]-servlet.xml的文件,会出现以下错误:
ERROR:org.springframework.web.servlet.DispatcherServlet-Contextinitializationfailed
org.springframework.beans.factory.BeanDefinitionStoreException:IOExceptionparsingXMLdocumentfromServletContextresource[/WEB-INF/SpringMVCDispatchServlet-servlet.xml];nestedexceptionisjava.io.FileNotFoundException:CouldnotopenServletContextresource[/WEB-INF/SpringMVCDispatchServlet-servlet.xml]
HelloWordController.java:
packageorg.lxh.mvc.controller;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/test")
publicclassHelloWordController{
privateLoggerlogger=LoggerFactory.getLogger(HelloWordController.class);
@RequestMapping("/hello")
publicvoidHello(){
logger.info("Thehello()methodisuse");
}
@RequestMapping("/welcome")
publicStringwelcome(){
logger.info("Thewelcome()methodisuse");
//return"/welcome";
return"/WEB-INF/jsp/welcome";
}
@RequestMapping("/helloWorld")
publicModelAndViewhelloWorld(){
logger.info("ThehelloWorld()methodisuse");
ModelAndViewview=newModelAndView();
//view.setViewName("/helloworld");
//view.setViewName("/WEB-INF/JSP/helloworld");
view.setViewName("/hello");
returnview;
}
}
可以发现上面为什么有那么多注释,
先一个一个来说明,springmvc可以通过以下三种方式链接到视图解析器中,每种方法以requestMapping注解作为跳转.
第一种,使用无返回方法跳转,如果使用返回方法进行跳转的话,则会通过视图解析器进行以prefix(前缀)+方法名+suffix(后缀)组成的页面文件名称.这样的话可能需要用urlwriter框架进行重向地址更改,保证安全性.
第二种,使用一个返回的字符串方法作为跳转,使用字符串跳转的话好处就是在return的时候可以自己指定返回的名字,JSP组成是prefix(前缀)+返回的字符串+suffix(后缀),这样的话跳转的时候外围广很多而且,安全性相对高点
第三种,返回一个ModelAndView类型,ModelAndView是spring2.5经常使用的方式,使用setViewName方法则可以跳转到指定的页面.
在类中还还发现一个Contorller的注解,该注解是用于把当前Java类变成一个Spring里面的一个beans,如果在Class上面加入requestMapping的话,而在方法上还拥有requestMapping,则在浏览器输入的地址为
例如:
输入
图2:跳转目录
相关文章推荐
- 基于注解的spring 3.0.x MVC学习笔记(一)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(八)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(八)
- 基于注解的spring3.0.x MVC学习笔记(二)
- [学习笔记]基于注解的spring 3.0.x MVC学习笔记(一)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(五)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(九)
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(六)
- 基于注解的spring 3.0.x MVC学习笔记(一)
- 基于注解的spring3.0.x MVC学习笔记
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(七)
- 基于spring source tools suite注解的spring3.0.x MVC学习笔记(二)
- 基于注解的spring3.0.x MVC学习笔记(二)
- Spring MVC 学习笔记(二) 基于spring2.5注解实现的spring MVC项目
- Java 学习笔记05:Spring 基于注解(Annotation)的IOC
- Java 学习笔记06:Spring 基于注解(Annotation)的AOP
- Spring4学习笔记-AOP(基于注解的方式)
- 基于annotation注解的Spring3 MVC Form Handling Example之二表单提交学习笔记
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(三)
- JavaWeb学习笔记-spring-06-ioc-基于注解配置