Java学习之Spring MVC入门

Java学习之SpringMVC入门0x00前言前面写了SSM的两大框架,分别是Mybatis和Spring,这里来写一下SpringMVC框架的相关内容。0x01SpringMVC

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java学习之Spring MVC入门

0x00 前言

前面写了SSM 的两大框架,分别是Mybatis和Spring,这里来写一下Spring MVC框架的相关内容。

0x01 Spring MVC概述

  1. 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。

  2. Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供
    了构建 Web 应用程序的全功能 MVC 模块。

  3. 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的
    SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。

0x02 Spring MVC 代码实现

配置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>
<!--设置前端控制器名字-->
        <servlet-name>dispatcherServlet</servlet-name>
<!--        设置前端控制器引用-->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        设置默认加载spring 配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        
    </servlet>
<!--    使用dispatcherServlet 并设置拦截路径-->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

这里设置了读取sprng mvc.xml的文件,我们还需要创建一个spring mvc.xml文件,然后对其进行配置

配置spring mvc.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--    注解扫描-->
<context:component-scan base-package="com.test">

</context:component-scan>
<!--配置视图解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
<!--配置spring开启注解mvc支持-->
    <mvc:annotation-driven></mvc:annotation-driven>

</beans>

使用context:component-scan开启注解扫描,后面就可以直接使用注解的方式,将类加载到容器里面了。

colltroller类:

package com.test.domain;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloContraoller {
    @RequestMapping(path = "/hello")
    public String sayHello(){
        System.out.println("Hello spring mvc");
        return "success";
    }
}

@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。

@RequestMapping 注解方法表示如果该注解指定的路径将会执行被注解的方法。

RequestMapping的属性:

1. path 指定请求路径的url
2. value value属性和path属性是一样的
3. mthod 指定该方法的请求方式
4. params 指定限制请求参数的条件
5. headers 发送的请求中必须包含的请求头

后面就可以编写jsp页面来测试了。

index.jsp页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="/hello">入门</a>

</body>
</html>

设置请求方式

我们还可以在@RequestMapping注解中指定请求方式。

@Controller
public class HelloContraoller {
    @RequestMapping(path = "/hello",method = RequestMethod.POST)
    public String sayHello(){
        System.out.println("Hello spring mvc");
        return "success";
    }
}

在注解中加入method属性,指定为post属性,就可以了。
如果使用get的方式去请求,会发现请求会失败。

设置请求参数

在RequestMapping注解里面添加params属性指定参数。

@Controller
public class HelloContraoller {
    @RequestMapping(path = "/hello",params = {"username"})
    public String sayHello(){
        System.out.println("Hello spring mvc");
        return "success";
    }
}

如果没有参数,则不执行该方法。

参数绑定

方法中添加参数值,在提交参数的时候,mvc框架会帮我们拿到该值并传入到方法里面。

@Controller
public class HelloContraoller {
    @RequestMapping(path = "/hello",params = {"username","password"})
    public String sayHello(String username,String password){
        System.out.println("username"+username);
        System.out.println("password"+password);
        return "success";
    }
}

参数绑定实体类

定义一个接收参数的实体类


public class Person {
    private String username;
    private  String password;

    public String getUsername() {
        return username;
    }

    @Override
    public String toString() {
        return "Person{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

contraoller类:

   }
    @RequestMapping(path = "/tijiao",params = {"username","password"},method = RequestMethod.POST)
    public String submit(Person person){
        System.out.println(person);

        return "success";
    }

这里只需要设置传入参数为定义的实体类就行。

submit页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="/tijiao" method="post" >
    账户:<input type="text" name="username">
    密码: <input type="password" name="password">
    <input type="submit" name="提交">

</form>

</body>
</html>

jsp页面里面表单提交的的名字要和实体类的成员变量名一样,不然无法自动封装。

0x03 结尾

Spring mvc其实比前面的都简单不少,但是在xml的配置上会麻烦一些。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119928.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 智能避障小车_单片机智能小车程序

    智能避障小车_单片机智能小车程序      接下来我对所用的模块以及小车的硬件部分做一个讲解        小车的总体效果图如下:      首先是模块简介:            1、首先就是L298N,这是一个经典的电机驱动,相信基本所有玩过单片机,玩过电机的人都使用过,它可以最高容忍15v电压输入,逻辑电平2.4-5.5v,所以使用单片机的3.3v完全可以驱动,它并没有PWM接口来控制电机的速度,只能使逻辑电平输出…

    2022年10月17日
    0
  • C# 连接本地数据库

    C# 连接本地数据库C#VSCodeM1C#如何连接本地数据库?1.安装MySQL下载MySQL软件,傻瓜式安装即可,安装完之后,在系统偏好号设置里会出现一个MySQL的图标。在安装的时候会让用户输入密码,这个自己看着输就行了,但是别忘记了。建议别用终端命令行安装了,对初学者来说学习成本比较大。2.连接本地MySQL安装完MySQL之后,点击MySQL图标,开启MySQL,如下我已开启我本地已安装了Navicate,我就使用Navicate对本地数据库进行连接,验证是否能连接成功打开Nvi.

    2022年5月31日
    40
  • 《善数者成:大数据改变中国》读书笔记3

    《善数者成:大数据改变中国》读书笔记3第八章撬动商业:新“规模经济”,数最懂你每一个消费者在消费的过程中留下数据,就会形成商业大数据。“”智慧门店”与天猫围绕新零售在新品首发、渠道管理、大数据赋能和线上线下全渠道融合等领域展开一揽子合作。向新零售转变,卖货层面是最直接的,其次是数据要打通。海澜之家采用RFID技术给2亿件衣服分配了各自的身份编码,进而实现了线上下单、线下发货,并在门店之间实现了数据共享互通,让一条条销售数据从“碎片”走向“整合”,然后又通过大数据分析,更好地分析和洞察消费者需求,及时调整经营策略,降低整体经营性投入,最终

    2022年8月30日
    3
  • 虚拟机连网(多台虚拟机互联、虚拟机与真机互联、虚拟机上网)

    虚拟机连网(多台虚拟机互联、虚拟机与真机互联、虚拟机上网)一)通常虚拟机中下载安装配置完系统之后自动选择的是NAT(用于共享主机IP)此时真机和虚拟机是可以ping通的,但是此时虚拟机是不能上网的(也就是尝试ping通www.baidu.com时无法ping通);

    2022年5月18日
    38
  • laravel5.6 QQ 第三方登录

    laravel5.6 QQ 第三方登录

    2021年10月25日
    44
  • 手把手教你用idea搭建ssm项目并实现简单demo(超详细)

    手把手教你用idea搭建ssm项目并实现简单demo(超详细)闲暇之余,想搭建一个ssm项目玩玩,结果发现,不百度根本打不出来,搭建出来也有一堆问题,所以在此一步一步记录一下。使用idea搭建ssm项目,首先就是将整个框架整起来如果已经在项目中了,点击左上角file->new->project(刚打开idea是新建->project)[image1]左侧栏目选择maven并勾选createfromarchetype,然后在下面找到org.apache.maven.archetype:maven-archetype-weba

    2022年6月16日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号