一、
1.导入springmvc项目,试运行看到效果
2.①创建项目springmvc
②导入jar包
③配置web.xml
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
配置Spring MVC的入口 DispatcherServlet,把所有的请求都提交到该Servlet
④创建springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index">indexController</prop>
</props>
</property>
</bean>
<bean id="indexController" class="controller.IndexController"></bean>
</beans>
这是Spring MVC的 映射配置文件
表示访问路径/index会交给id=indexController的bean处理
id=indexController的bean配置为类:IndexController
补充:
bean:
Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);
凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;
规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;(@Component , @Repository , @ Controller , @Service , @Configration)
把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean(注册)或者给出一个Bean(使用)
3.控制类 IndexController
控制类 IndexController实现接口Controller ,提供方法handleRequest处理请求
SpringMVC通过 ModelAndView 对象把模型和视图结合在一起
ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");
表示视图是index.jsp
模型数据是 message,内容是 “Hello Spring MVC”
4.index.jsp
5.restart tomcat,重启测试
6.原理:
用户访问 /index
根据web.xml中的配置 所有的访问都会经过DispatcherServlet
根据 根据配置文件springmvc-servlet.xml ,访问路径/index
会进入IndexController类
在IndexController中指定跳转到页面index.jsp,并传递message数据
在index.jsp中显示message信息
二、视图定位
1.下载完整项目,试运行看到效果
如果代码写成这样,就表示跳转到页面 index.jsp
new ModelAndView("index.jsp");
所谓的视图定位,指的是代码还是写成这样,但是会跳转到 /WEB-INF/page/index.jsp
new ModelAndView("index");
2.与前一个项目对比。
①修改springmvc-servlet.xml,增加
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
其作用是把视图约定在/WEB-INF/page/*.jsp这个位置
②修改IndexController
把IndexController类的这一行代码
ModelAndView mav = new ModelAndView("index.jsp");
修改为
ModelAndView mav = new ModelAndView("index");
③移动index.jsp
在WEB-INF下新建目录page
把index.jsp移动到 WEB-INF/page 目录下
三、注解方式
1.与前一个项目对比
①修改IndexController
在类前面加上@Controller 表示该类是一个控制器
在方法handleRequest 前面加上 @RequestMapping("/index") 表示路径/index会映射到该方法上
注意:不再让IndexController实现Controller接口
@Controller
public class IndexController {
@RequestMapping("/index")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
②修改springmvc-servlet.xml
去掉映射相关的配置,因为已经使用注解方式了
增加
<context:component-scan base-package="controller" />
表示从包controller下扫描有@Controller注解的类
问题:
1.tomcat一定要restart一下,不然就运行不出来
2.第一次自己做的时候出现了500,并且蹦出来很多错误。然后我重新做了一遍,仔仔细细将jar包复制进去就做出来了