环境配置
- 新建一个 maven 项目,为项目
add framwork support -> web
- 在 project structure 下的 artificts 为新建项目的 WEB-INF 添加 lib 目录,并将依赖包导入
在 web.xml 文件下注册 DispatcherServlet
<!--1.注册DispatcherServlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--启动级别-1-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- / 匹配所有的请求;(不包括.jsp)-->
<!-- /* 匹配所有的请求;(包括.jsp)-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在 resource 目录下创建 springmvc-servlet.xml,并配置
<context:component-scan base-package="com.canso.controller"/>
<!--视图解析器:DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<bean name="/t1" class="com.canso.controller.ControllerText1"/>
配置视图解析器映射的文件,文件目录同以上前缀
实现Controller接口
package com.canso.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ControllerText1 implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("msg","controllertext1");
mv.setViewName("text");
return mv;
}
}
至此,便可以通过http://localhost:8080/spring_04_controller_war_exploded/t1访问页面
这种实现接口的方式,每个控制器只能实现一个方法,每个方法均需要在xml中配置bean
使用注解Controller
将以上的springmvc-servlet.xml配置如下
<context:component-scan base-package="com.canso.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
新建一个Controller
package com.canso.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ControllerText2 {
@RequestMapping("/t2")
public String text1(Model model){
model.addAttribute("msg","ControllerText2");
return "text";
}
@RequestMapping("/t3")
public String text2(Model model){
model.addAttribute("msg","ControllerText3");
return "text";
}
}
至此,我们可以通过http://localhost:8080/spring_04_controller_war_exploded/t2访问text1,通过http://localhost:8080/spring_04_controller_war_exploded/t3访问text2