MVC环境搭建

MVC环境搭建

1.引入依赖

xml 复制代码
  <!-- 集成 spring 框架 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.13.RELEASE</version>
        </dependency>
        <!-- 集成 web 框架 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.13.RELEASE</version>
        </dependency>
        <!-- SpringMVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.13.RELEASE</version>
        </dependency>

2. 修改项目web-inf下的web.xml

xml 复制代码
<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <!--配置过滤器 解决中文乱码问题-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <!--初始化CharacterEncodingFilter类时所需要的参数-->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
        <!--响应的字符集也强制按照设置的encoding-->
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <!--表示过滤器对哪些请求生效 匹配请求地址-->
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <servlet>
        <!--配置springmvc框架入口-->
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <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>
    <!--另一种映射方式-->
    <!--    &lt;!&ndash;声明 servlet &ndash;&gt;-->
    <!--    <servlet>-->
    <!--        <servlet-name>test</servlet-name>-->
    <!--        <servlet-class>com.j3071.mvc.servlet.TestServlet01</servlet-class>-->
    <!--    </servlet>-->

<!--    &lt;!&ndash;建立 servlet 映射&ndash;&gt;-->
<!--    <servlet-mapping>-->
<!--        <servlet-name>test</servlet-name>-->
<!--        <url-pattern>/test</url-pattern>-->
<!--    </servlet-mapping>-->

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>



</web-app>

3.在resources目录下添加 springMVC-servlet.xml 内容如下

xml 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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
    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">
    <!--基于beanname的方式-->
<!--    <bean name="/testmvc" class="com.j3071.mvc.controller.BeanNameController"></bean>-->

    <!--注解映射的方式-->
    <context:component-scan base-package="com.j3071.mvc.controller"/>
    <!--配置注解驱动-->
    <mvc:annotation-driven/>

    <!--配置解析物理地址的方式-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/><!--jsp的路径 如果在jsp包下 /jsp/-->
        <property name="suffix" value=".jsp"/><!--后缀-->

    </bean>
</beans>

4.编写controller

java 复制代码
package com.j3071.mvc.controller;/*
 * @Date:2023/11/16
 * @Description:com.j3071.mvc.controller
 */

import com.alibaba.fastjson.JSONObject;
import com.j3071.mvc.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class AnnController {
    //设置映射路径
    @RequestMapping("/testAnn")
    public ModelAndView m1(){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("test01");
        return modelAndView;
    }
    @RequestMapping("/testAnn1")
    public ModelAndView m2(@RequestParam("userName") String userName,
                           @RequestParam("passWord") String passWord){
        System.out.println(userName);
        System.out.println(passWord);

        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("test01");
        return modelAndView;
    }
    @RequestMapping("/testAnn2")
    public ModelAndView m3(User user){
        System.out.println(user.getUserName());
        System.out.println(user.getPassWord());

        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("test01");
        //设置返回的数据 作用于req.setAttribute()一样
        modelAndView.addObject("message","登陆成功");
        return modelAndView;
    }

    /**
     * 如何返回json数据
     * @return
     */
    @RequestMapping("/testJson")
    @ResponseBody
    public String m4(){
        User user=new User();
        user.setUserName("张三");
        user.setPassWord("123456");
        //方法返回值是String时 默认为返回的是页面 如果想返回String数据本身那么使用@ResponseBody注解
        //return "test01";
        return JSONObject.toJSONString(user);
    }
}

5.Controller接收参数

java 复制代码
@Controller
public class AnnController {
    //按参数来接收
    @RequestMapping("/testAnn1")
    public ModelAndView m2(@RequestParam("userName") String userName,
                           @RequestParam("passWord") String passWord){
        System.out.println(userName);
        System.out.println(passWord);

        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("test01");
        return modelAndView;
    }
    //按对象来接收
    @RequestMapping("/testAnn2")
    public ModelAndView m3(User user){
        System.out.println(user.getUserName());
        System.out.println(user.getPassWord());

        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("test01");
        //设置返回的数据 作用于req.setAttribute()一样
        modelAndView.addObject("message","登陆成功");
        return modelAndView;
    }

  
}

6.处理form请求 返回ModelAndView

java 复制代码
  @RequestMapping("/testAnn2")
    public ModelAndView m3(User user){
        System.out.println(user.getUserName());
        System.out.println(user.getPassWord());

        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("test01");
        //设置返回的数据 作用于req.setAttribute()一样
        modelAndView.addObject("message","登陆成功");
        return modelAndView; 
    }

7.处理ajax请求返回json数据 添加@ResponseBody注解

java 复制代码
  /**
     * 如何返回json数据
     * @return
     */
    @RequestMapping("/testJson")
    @ResponseBody
    public String m4(){
        User user=new User();
        user.setUserName("张三");
        user.setPassWord("123456");
        //方法返回值是String时 默认为返回的是页面 如果想返回String数据本身那么使用@ResponseBody注解
        //return "test01";
        return JSONObject.toJSONString(user);
    }
相关推荐
乐之者v6 分钟前
leetCode43.字符串相乘
java·数据结构·算法
suweijie7683 小时前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
公贵买其鹿4 小时前
List深拷贝后,数据还是被串改
java
xlsw_7 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹8 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭8 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫9 小时前
泛型(2)
java
超爱吃士力架9 小时前
邀请逻辑
java·linux·后端
南宫生9 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石9 小时前
12/21java基础
java