新建一个动态web工程,
在lib下面引入依赖的jar包
并且选中jar包,邮件构建路径-->配置构建路径,添加
知识点梳理;
首先在src下面写一个helloworldController类;
public class HelloWorldController {
public String printWelcome(ModelMap model){
model.addAttribute("message", "spring Mvc HelloWorld");
return "hello";
}
此时这只是个简单的类,该类想成为前端控制器,就要到spring-mvc.xml中配置前端控制器,
在src下面新建spring-mvc.xml:
本文使用注解的方式,首先在xml文件中打开注解:
<mvc:annotation-driven/>
然后配置controller的包路径:
<context:component-scan base-package="com.wfl.springmvcTest2"/>
此时再回到HelloWorldController类,在类前面加上标识 @Controller
此时这个类HelloWorldController就是一个前端控制器了。
--------------------------------------------------------------------------------------------------
printWelcome()方法能够应答一个请求,首先写出这个请求,在Webcontent里写index.jsp:用一个jsp页面里的超链接去请求,
<a href="helloworld">hello world</a>这样在点击超链接的时候,就会发送一个请求,
然后web.xml里面的<servlet mapping>里面的servlet就会响应请求,<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/<url-pattern>(这里表示能够应答所有请求,这个是限制请求的类型,也可以写wfl/ 或者其他)
接下来这个请求要交给那个处理器的那个方法?这里使用@RequestMapping注解映射请求的url, 将index.jsp里面的超链接href写进去,就是@RequestMapping("/helloworld")。
类里面返回一个hello,这个页面(为啥是个页面?),为这个页面进行配置,是在src下面的spring-mvc.xml里面配置视图解析器。
也就是配置视图的解析:(如何把handler方法返回值解析为实际的物理视图)
<!-- 配置视图解析器 -->
<!--prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),
比如传进来的逻辑视图名为WEB-INF/jsp/index,则该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”; -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"/>前缀
<!-- <property name="prefix" value="/"/> -->
<property name="suffix" value=".jsp"/> 后缀
</bean>
UrlBasedViewResolver 视图解析器会根据 根据配置文件前缀+返回值+后缀的方式得到实际的物理视图,然后做转发操作。就会转发到WEB-INF/views/success.jsp(根据上面的前后缀和返回值得到),那么就去工程里面建立这样的文件,然后将index.jsp在server中运行,点击超链接即可。
在WEB-INF/下面新建一个web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<!-- springMVC的前端控制器 -->
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<!-- spring mvc配置文件结束 -->
<!-- 拦截设置 -->
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<!-- 设置拦截那些请求,此时是拦截所有请求! -->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
这样就
前端控制器是DispatcherServlet,不需要程序员开发,直接使用,用来接受请求,并相应结果,相当于一个转发器,