1)问题:spring项目中有多个配置文件mvc.xml dao.xmlweb
2)解决:在web.xml中spring
<init-param>服务器
<param-name>contextConfigLocation</param-name>mvc
<param-value>/WEB-INF/xxx/*.xml</param-value> app
xxx表示xml文件路径 *.xml表示后缀名为xml的任意文件jsp
</init-param> post
3)可使用 逗号分隔spa
二:controllercomponent
1:spring mvc 中将 controller 认为是 MVC中的C --控制层xml
2:规范命名 类名 xxxController
3:若是不基于注解: 该类须要继承 CommandController 或者 其余不少 参见 spring帮助
若是基于注解:在类名前 加上 @controller
4:补充:将类名前加上该注解,当spring启动 或者web服务启动 spring会自动扫描全部包(固然,这个能够设置)
做用: 就是告诉服务器 这个类是MVC中的C 这个类能够接收用户请求 处理用户请求
三:问题:如何接收用户请求
1:假设用户请求URL 是: http://localhost:8080/项目名/xxx.do do不do都同样 无论这个do 你用什么均可以
2:这个时候,spring开始在全部的 C 中,找对应的处理请求的方法
3:在任意的能够C的类中,在你想要处理此请求的方法定义的前面
@RequestMapping("/xxx") 这个时候的xxx 就是用户请求的xxx 无论do
public String 方法名()
{
return “aaa”;
返回一个字符串,很是有用 要注意 用来决定要显示的MVC的 V 视图层 是哪一个
}
四:上面 配置好了 MVC的 C 也就是 控制层 在方法中返回字符串 用来决定MVC的V 视图层
问题:如何让spring 去扫描类 创建关联
1:在配置文件中 (spring)的 假设是 mvc.xml 中
2:加入 <context:component-scan base-package="包路径"/>
五:问题 如何返回到视图层 V
1: 解决:此时,须要在配置文件中,加入视图解析器 有不少种 ,太多了
2:这里用基于jsp/jstl 视图
3:在web.xml 中加入bean 配置
<bean class="org.s...f....web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views"/> 前缀
<property name="suffix" value=".jsp"/> 后缀
</bean>
小结:经过上述5步 ,基本完成 C V 的配置
1:spring 中的C 通常起类名 XXXController 在这个类里面 须要加入@controller 标志这个类能够做为请求处理类 也就是 控制类
2:这个控制类里面能够有不少方法,哪一个方法用来处理用户请求,就在那个方法前面 加 @RequestMapping(“/xxxxx请求路径”)
3;当请求处理完毕后 返回值 决定了 该处理完毕后 用户将跳转到那个页面 这个很重要
4:例如
@RequestMapping("/xxx") 这个时候的xxx 就是用户请求的xxx 无论do
public String 方法名()
{
return “aaa”;
返回一个字符串,很是有用 要注意 用来决定要显示的MVC的 V 视图层 是哪一个
}
返回 aaa 根据配置文件中的 视图处理器配置 加入前缀 后缀
页面将跳转到 /WEB-INF/views/aaa.jsp
6、 问题:有多个 @RequestMapping
@controller
@RequestMapping("/aaa") ----------------->类级别 能够不须要 若是要了 下面全部的请求路径前 都须要加入 /aaa
public class ccccontroller{
@RequestMapping("/bbb") --------------------->方法级别 必须有 决定这个方法处理哪一个请求 若是有类级别 /aaa/bbb
public String xxx(){ 若是没有 /bbb
retrun
}
}
七:问题:接收用户请求参数 值
1)请求1: /test/start.do?name=zhangsan
请求2: /test/start/zhangsan.do
在请求2中 将参数做为请求URL 传递 感受用的不习惯
采用 URL模板
2)@RequestMapping("/start/{name}") 这个name 随便 啥均可以
public String start(@PathVariable("name") string name){ 反正和上面的对应
return 方法体里面就能够直接得到参数
}
3)包含多个 @RequestMapping ("/start/{name}/{age}")
八 问题 不一样请求方法 用不一样处理方法 get post
@RequestMapping (value="/start" ,method=RequestMethod.GET) 处理post 就换成 POST