SpringMVC基础 学习笔记(1) ---- SpringMVC简单使用

SpringMVC4
              jar:原有Spring的jar再加上
Spring-context-support:支持UI模板,邮件服务,缓存cache
Spring-webmvc:对mvc的实现
 
基本步骤:
 
1.创建class实现Controllor接口
2.创建ModelAndView对象,向这个对象添加信息
3.ModelAndView.setViewName();
4.在WEB-INF下创建folder,folder放jsp文件
5.setViewName填/WEN-INF/....
6.注册Controller:src 下 springmvc.xml(任意)
7.xml添加bean的约束
<? xml version = "1.0" encoding = "UTF-8" ?>
< beans xmlns = "http://www.springframework.org/schema/beans"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context = "http://www.springframework.org/schema/context" xsi:schemaLocation = "
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd" >
 
8.注册Controllor:
        <!--  限制mvc处理的请求为.do,必须斜杠开头 -->
        < bean id = "/my.do" class = "handlers.MyController" > </ bean >
 
9.注册中央调度器:web.xml中注册,它是一个servlet
  < servlet >
       < servlet-name > mvc </ servlet-name >
         < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
  </ servlet >
  < servlet-mapping >
       < servlet-name > mvc </ servlet-name >
       < url-pattern > *.do </ url-pattern >
  </ servlet-mapping >
不能配置/*
 
跳转到的JSP页面中用${message}可以显示Model.addObject()方法添加的数据
//${requestScope.message}也能输出
 
运行出FileNotFoundException:
Could not open ServletContext resource [/WEB-INF/mvc-servlet.xml]
 
因为默认到到WEB-INF下找servlet-name-servlet.xml配置文件;
 
所以把配置文件改名并且放到WEB-INF下
 
程序可以运行
 
 
问题:文件名和文件位置固定(只能放在WEB-INF下的servlet-name-servlet.xml),不好
解决:DispatcherServlet加载的SpringMVC配置文件,修改DispatcherServlret的属性(在父类中)
 
修改contextConfigLocation属性,不是在<context-param>(ServletContext)里修改而是在servlet的<init-param>。
       < init-param >
             < param-name > contextConfigLocation </ param-name >
             < param-value > classpath:springmvc.xml </ param-value >
       </ init-param >
 
重新启动,成功。
 
问题:servlet是在 初次访问(访问的时候还要先初始化个servlet)才由容器创建,使响应速度变慢
解决 : <servlet>的load-on-startup标签:
< load-on-startup > 1 </ load-on-startup >          ---多个servlet的load-on-startup越小越优先,大于0的整数菜有意义
 
问题mv.setViewName();里面资源的地址太长
mv.setViewName有另一种写法 :视图解析器:相当于拼凑url
1.创建bean(不用id)内部视图解析器,有两个属性:前缀和后缀:
 
        < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
             < property name = "prefix" value = "/WEB-INF/anyfolder/" />
             < property name = "suffix" value = ".jsp" />
        </ bean >
 
直接运行程序,成功
 
在这里
mv .setViewName( "welcome" );
welcome为逻辑视图名,拼接后为物理视图名

猜你喜欢

转载自www.cnblogs.com/coderlynn/p/8948111.html