SpringMVC之环境搭建和参数绑定


前言

SpringMVC就是整合了MVC模型的框架,可以让你无需实现任何接口,只需通过注解等简易操作,实现让一个简单的Java类成为处理请求的控制器,实现请求数据的快捷封装,实现对应请求的响应视图和数据。

一、项目环境搭建

创建maven工程的web项目,所有配置完成后的项目结构如下:
项目结构

1.配置pom文件的依赖

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring.version>5.0.2.RELEASE</spring.version>
  </properties>
<dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

2.配置web.xml

配置一个前端控制器DispatcherServlet实质也是一个HttpServlet,有两个作用,①负责分发所有的请求;②当你配置了初始化参数contextConfigLocation后,将会根据你配置的值读取指定的配置文件来初始化(例如创建对象或开启注解等)

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <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:springmvc.xml</param-value>
    </init-param>
    <!--加这个属性为整数时,可以让servlet在web服务器启动后自动创建,
    如果是负数或没有设置,则表示servlet被请求时才会加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--我这里还加了个springMVC提供的字符编码过滤器-->
  <filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3.创建springmvc.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
        https://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">

    <context:annotation-config/>
    <!--需要扫描哪些位置的注解-->
    <context:component-scan base-package="com.mediacomm"></context:component-scan>
    <!--创建视图解析器,我这里配置的两个属性,到时就会根据返回值响应给客户端对应/WEB-INF/page/路径下的jsp页面-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/page/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
   	<!--使 用 <mvc:annotation-driven> 自动加载 RequestMappingHandlerMapping (处理映射器) 和
	RequestMappingHandlerAdapter ( 处 理 适 配 器 )-->
    <mvc:annotation-driven/>

运行于tomcat服务器

二、使用步骤

1.创建jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <a href="hello">入门教程</a>
    <a href="param?username=rr&password=123456">参数绑定</a>
    <form action ="paramsBean/1" method="post">
        姓名:<input type="text" name="username"><br/>
        密码:<input type="password" name="password"><br/>
        地址:<input type="text" name="address"><br/>
        存款:<input type="text" name="money"><br/>
        描述:<input type="text" name="userInfo.info"><br/>
        日期:<input type="text" name="date"><br/>
        <input type="submit" name="提交"><br/>
    </form>
</body>
</html>

2.创建java类

@Controller:让SpringIoC容器为我们创建一个单例对象
@RequestMapping:用于建立请求 URL 和处理请求方法之间的对应关系
    属性:
    path:用于指定请求的 URL
    params:用于指定限制请求参数的条件,要求请求参数的 key 或value 必须和
配置的一模一样
    method:用于指定请求的方式

在jsp中可以看到我用到了三种方式发送请求,第一种直接get请求,第二种get请求带参数,第三种是post一个表单。这三个请求分别对应了代码中@RequestMapping的path值

而请求的参数,springMVC会根据对应的方法中的同名参数自动进行绑定,也就是无论引用类型还是基本类型都会自动帮你封装,留意我jsp表单中的userInfo.info,这是因为User类中包含了userInfo的自定义类型属性,所以表单中的参数要封装到User中就需要按照这样的写法。

@Controller
public class HelloServlet {
    @RequestMapping(path = "/hello")
    public String sayHello(){
        System.out.println("first springmvc project:第一个");
        return "success";
    }
    @RequestMapping(path = "/param",params = {"username","password"})
    public String params(String username,String password){
        System.out.println("user params:"+username+","+password);
        return "success";
    }
    @RequestMapping(path = "/paramsBean",method = {RequestMethod.POST})
    public String paramsBean(User user){
        System.out.println(user);
        return "success";
    }
}

3.演示效果

1.显示效果
显示效果
2.第一个请求
在这里插入图片描述
控制台输出

[2021-07-29 09:33:42,000] Artifact day01_first_springmvc:war: Artifact is deployed successfully
[2021-07-29 09:33:42,001] Artifact day01_first_springmvc:war: Deploy took 8,633 milliseconds
29-Jul-2021 09:33:43.212 信息 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\01 软件\eclipse\apache-tomcat-9.0.41\webapps\manager]
29-Jul-2021 09:33:43.426 信息 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\01 软件\eclipse\apache-tomcat-9.0.41\webapps\manager]的部署已在[212]毫秒内完成
first springmvc project:第一个

3.第二个请求
在这里插入图片描述
控制台输出

user params:rr,123456

4.第三个请求
在这里插入图片描述
控制台输出

User{username='admin', password='123', money='123', address='321', id=0, userInfo=UserInfo{info='321'}, date=Mon Oct 01 00:00:00 CST 2091}

总结

简单的对SpringMVC的使用配置和参数绑定就列举到此,本人也在继续学习,如果言诉错误的地方,欢迎指正,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值