视频观看地址:http://edu.51cto.com/course/14795.html
1、SpringMVC
1.1、概述
Spring为展现层提供了一个优秀的mvc框架-Springmvc和大多数web框架一样,它是基于mvc的设计理念,此外它采用了松散耦合可插拔组件结构,与mvc框架相比更具有更好的扩展性和灵活性
SpringMVC通过一套mvc注解,让pojo称为处理请求的控制器,无需实现任何接口,此外Springmvc在数据绑定、视图解析、本地化及静态资源处理上都有许多不俗的表现
它在框架设计、扩展性、灵活性等方面全面超越了Struts、WebWork等mvc框架,从原来的追赶着一跃成为mvc的领跑者
SpringMVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet是SpringMVC框架的总导演、总策划、它负责截取请求并将其分派给相应的处理器处理
1.2、spring的架构图
2、SpringMVC程序搭建
2.1、添加jar包
2.2、配置web.xml文件
springmvc
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
springmvc
org.springframework.web.servlet.DispatcherServlet
1
springmvc
*.do
2.3、配置HandlerMapping
HandlerMapping的继承结构图
在springmvc-servlet中配置
2.4、配置handlerAdapter
在在springmvc-servlet中配置
2.5、编写控制器
package cn.org.kingdom.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("name", "hello springmvc");
return mv;
}
}
xml的配置
注意导入servlet-api
2.6、配置视图解析器
如何配置
2.7、测试
2.8、添加日志
添加日志包
log4j-1.2.17.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
并且在src目录中添加log4j.properties文件
log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout\t
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
2.9、SpringMVC的默认配置
DispatcherServlet.properties里面定义什么东西呢?
# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
那么既然这个配置文件中定义一些默认的配置,所有我们可以对于自己的配置文件进行更改
3、注解配置
3.1、第一个案例的问题
1、每个类都需要实现Controller接口,这样很麻烦
2、方法写的太死,只能处理一个业务
3、每个Controller都要在xml中进行配置
3.2、使用注解搞定
1、编写一个pojo类,在类中加上@Controller注解
2、在pojo类中,编写相应的方法,方法上加入@RequestMapping注解
3、采用spring的扫描包方式进行操作
3.3、定义Hello2类
package cn.org.kingdom.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class Hello2 {
@RequestMapping(value="show01")
public ModelAndView show01(){
ModelAndView mv = new ModelAndView() ;
mv.setViewName("hello");
mv.addObject("name", "采用注解完成");
return mv ;
}
}
3.4、配置xml
3.5、测试
3.6、观察程序执行流程
发现注解采用的HandlerMapping
发现注解采用HandlerAdapter
发现:
@Deprecated
public class DefaultAnnotationHandlerMapping extends ...{}
已经废弃了
@Deprecated
public class AnnotationMethodHandlerAdapter extends WebContentGenerator
implements HandlerAdapter, Ordered, BeanFactoryAware {}
这个类也废弃掉
springmvc为我们提供可用的类:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
重新为核心配置文件加上配置
3.7、采用注解驱动来替换配置
注解配置