Spring入门程序的编写
入门程序的步骤
- 配置环境
- 配置MVC的配置文件
配置环境
1.导入mvc需要依赖的jar包,因为springMVC是我们Spring中的一个web小服务,所以我们还是需要spring所依赖的环境。
如果只是需要我们MVC的环境的话我们就知道导入如下jar包就可以了
web.xml文件的配置
我们需要我们的web项目读到我们的SpringMVC的服务,这样我们才能使用我们的框架,因为这个是客户端跟服务端的一个交互,所以我们就叫这个是业务层的框架,需要我们将web跟servlet联系起来,而我们要使用框架,所以我们配置文件需要初始化我们的spring容器跟子容器MVC
<?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>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvcNote.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--解决Post乱码问题的拦截器
CharacterEncodingFilter 在高版本的Spring中是可以解决 get请求 和Post请求 、
低版本 比如说4.X中 只能解决Post请求 不能解决get请求
-->
<filter>
<filter-name>Charac</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Charac</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
关于我们SpringMVC的核心的一个bean:
我们在使用SpringMVC的时候web端请求跟响应的数据会有一个乱码的问题,我们需要将请求跟响应拦截下来过滤一次,使用到filter标签,MVCjar包下的org.springframework.web.filter.CharacterEncodingFilter来解决我们的乱码问题,但是注意一个版本问题,这个问题我在注解中写了,配置文件具体的配置看一下就可以了
SpringMVC配置文件文件的配置
<?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 http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--注解来配置xml文件-->
<context:component-scan base-package="com.shangma"></context:component-scan>
<!--处理器(映射),适配器-->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>-->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>-->
<!--视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
//这个代替了处理器适配器,写了这个就不用写处理器跟适配器那么长的代码了
<mvc:annotation-driven/>
</beans>
关于我们SpringMVC的核心的一个bean:
< bean class=“org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping”>
对url地址隐射到我们的某个bean的方法中去,遍历容器中的所有bean 怎么识别呢,带有注解的@requestmapping或者@contorller(控制)的bean类,然后再遍历这个bean类中的所有方法,如果方法带有requstmapping说明这个方法是需要被映射的
简而言之就是扫描的一个bean,符合要求的就会被扫描出来
Controller示例
package com.shangma.cn.entity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class WeclomController {
//我们可以通过地址加项目名加下面的这个hello直接访问这个controller层。
@GetMapping("hello")
public ModelAndView name (){
//新建一个modelAndview对象,将我们的属性装进去
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg","醉眼看人间个个都温柔");
//我们的这个对象会自动找到我们web下面的success.jsp
modelAndView.setViewName("success");
//返回这个视图对象,将自身给到success页面,String的形式
return modelAndView;
}
}
page页面
<%--
Created by IntelliJ IDEA.
User: JAVASM
Date: 2019/8/19
Time: 10:10
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>这是success页面</h2>
${msg}
</body>
</html>