SpringMVC的基本配置

SpringMVC

SpringMVC是spring的后续产品,看名字spring + MVC 就知道 它是spring对servlet进行封装形成的一个MVC框架。下面具体来说一下它在spring中的配置。

XML和注解

使用spring整合 之前学过的struts2和mybatis的时候,就已经发现有了注解的加入让我们少写了好多关于xml文件的配置,springMVC不难想象肯定使用了很多注解。还是写一个小例子吧:
struts2中我们经常使用Action
springMVC中一般都用 Controller
这样写的话容易区分是struts2还是springMVC

//这个是放在类上面的,工厂会创建出来这个类,但是这个类只会创建一次,所以写实例变量的时候要注意线程安全等问题
@Controller
//映射这个模块的地址(namespace)
@RequestMapping("/user")
public class UserController {
	//属性自动装配。这里用来给业务层赋值
    @Autowired
    private UserService userService;
    //映射这个方法的地址
    @RequestMapping("/dologin")
    /*
springMVC中接收传过来的参数需要在方法中定义形参
1.形参名字就是传过来的参数名字
例如:https://ip/项目名/user/dologin.do?username=1这个username就是形参列表里面的username,需要保持一致。
2.如果传过来的参数是对象类型的话,形参可以放入对象,但是传参的时候直接传对象里面的参数就好,跟实体类对应。
有个小问题,就是定义的形参名字不要和对象里面的实例变量的名字重复。
3.Session的使用。形参中直接定义HttpSession session就好,使用的时候跟servlet相同
4.向JSP中传参的时候。定义一个Map集合,集合中的放的数据就可以在JSP中通过requestScope取出来
5.HttpServletResponse response ,HttpServletRequest request创建出servlet中的response和request对象
6.返回值一般是String(因为我们要返回一个映射地址),使用AJAX的时候一般配合JSON使用所以返回值也是Map,
使用验证码的时候没有返回值(是图片的地址请求的,不要返回值)
	*/
    public String dologin(String username,User user,HttpServletResponse response,Map map) throws IOException {
        //里面进行调用业务层,收参传值等一系列操作
        return "show";//如果只写一个字符串。会去mvc的配置文件中匹配(配置文件中会详细讲)
        return "forword:/url";//这个是转发
        return "redirect:/url";//这个是重定向
    }

配置文件的话首先看一下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_3_1.xsd"
         version="3.1">
    <!--加载springmvc的配置文件-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <!--乱码的配置-->
    <filter>
        <filter-name>characterEncoding</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>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--加载spring的配置文件-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
</web-app>

下面来看一下springMVC的配置文件
我们使用了springMVC的配置文件后,在我们的spring总配置文件中,我们在开始就只需要扫描service和dao包了。controller包的扫描应该放在mvc的配置文件中。
创建mvc.xm;

<?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">
    <!--扫描controller包下面的Controller类 扫描注解-->
    <context:component-scan base-package="com.baizhi.controller"/>
    <!--配置视图解析器:默认是转发的方式-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--给返回值加上前缀-->
        <property name="prefix" value="/"></property>
        <!--给返回值加上后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!--默认自动注册和@Controller相关的两个bean ,提供转换器,json(jackson)等的支持-->
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

猜你喜欢

转载自blog.csdn.net/cheng6202/article/details/84843152