springmvc
1:helloSpringMvc 第一个springMVC程序
springmvc的最主要的地方就是DispatcherServlet 请求转发的前端控制器
在web.xml中就可以直接配置了
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 通常都是在这里面写SERVLET的配置 但是现在配置DispatcherServlet 这是springmvc的核心 请求分发器 前端控制器-->
<!--注册DispatcherServlet-->
<servlet>
<servlet-name>springMvc</servlet-name>
<!-- 这个类也是spring帮我们写好的 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--需要关联一个springmvc的配置文件 就是必须绑定的-->
<init-param>
<!-- 配置地址定位-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--启动级别 服务器一启动就启动-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- /* 与/ 也是有区别的
/ 只匹配所有的请求 不会去匹配JSP页面
/* 匹配所有的请求 包括jsp页面
-->
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
<!-- 这样的话所有的请求都会经过这个DispatcherServlet-->
</servlet-mapping>
</web-app>
然后在这个适配器的配置中 需要关联一个spring的配置文件!
在iniParam中可以看到!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 就是spring的配置文件 配置文件知识,引用于该网址:https://www.cnblogs.com/afeng2010/p/10133797.html-->
<!--处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id="/hello" class="com.gong.controller.controller"/>
</beans>
在这个spring容器中你就可以看到有三个非常重要的 在刚才的图示中很重要的三个类
第一个是映射器 BeanNameUrlHandlerMapping
第二个是适配器 SimpleControllerHandlerAdapter 调用Controller
第三个就是视图解析 InternalResourceViewResolver
那么在controller中就有 就相当于是业务处理 并且会返回视图
package com.gong.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 controller implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("mesg","helloSpring");
modelAndView.setViewName("hello");
return modelAndView;
}
}
使用注解开发的版本:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 通常都是在这里面写SERVLET的配置 但是现在配置DispatcherServlet 这是springmvc的核心 请求分发器 前端控制器-->
<!--注册DispatcherServlet-->
<servlet>
<servlet-name>springMvc</servlet-name>
<!-- 这个类也是spring帮我们写好的 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--需要关联一个springmvc的配置文件 就是必须绑定的-->
<init-param>
<!-- 配置地址定位-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--启动级别 服务器一启动就启动-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- /* 与/ 也是有区别的
/ 只匹配所有的请求 不会去匹配JSP页面
/* 匹配所有的请求 包括jsp页面
-->
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
<!-- 这样的话所有的请求都会经过这个DispatcherServlet-->
</servlet-mapping>
</web-app>
xml 文件是一样的!
<?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 就是spring的配置文件 配置文件知识,引用于该网址:https://www.cnblogs.com/afeng2010/p/10133797.html-->
<!-- 自动扫描包 在这个包下面的所有注解都会生效 有IOC容器统一管理-->
<context:component-scan base-package="com.gong.controller"/>
<!-- 其实在真实的开发仲是不用的 只要注明了是controller的接口就可以了!-->
<!-- 默认资源过滤 让springmvc不处理静态资源 .css .js .mp3-->
<!-- <mvc:default-servlet-handler/>-->
<!-- 是使用注解驱动 可以不直接注入之前spring写好的bean-->
<!-- <mvc:annotation-driven/>-->
<!--视图解析器不变-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="suffix" value=".jsp"/>
<property name="prefix" value="WEB-INF/jsp/"/>
</bean>
</beans>
package com.gong.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//之前是在容器中手动的配置bean
@Controller //代表这个类会被spring接管 被这个注解的类中的所有方法 如果返回值是String 并且有具体的页面可以跳转那么就会被视图解析器解析
public class helloController {
@RequestMapping("/hello") //通过url可以hi接跳转到这个页面
public String hello(Model model){
model.addAttribute("msg","helloSpringMvc!");
//封装数据!
return "hello"; //返回的字符串就是视图的瓶子 会被视图解析器处理!
}
}