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为逻辑视图名,拼接后为物理视图名
原文地址:https://www.cnblogs.com/coderlynn/p/8948111.html