大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
Java学习之Spring MVC入门
0x00 前言
前面写了SSM 的两大框架,分别是Mybatis和Spring,这里来写一下Spring MVC框架的相关内容。
0x01 Spring MVC概述
- 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。
- Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供 了构建 Web 应用程序的全功能 MVC 模块。
- 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的 SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。
0x02 Spring MVC 代码实现
配置web.xml文件:
代码语言:javascript复制<?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 文件:
代码语言:javascript复制<?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类:
代码语言:javascript复制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的属性:
代码语言:javascript复制1. path 指定请求路径的url
2. value value属性和path属性是一样的
3. mthod 指定该方法的请求方式
4. params 指定限制请求参数的条件
5. headers 发送的请求中必须包含的请求头
后面就可以编写jsp页面来测试了。
index.jsp页面:
代码语言:javascript复制<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="/hello">入门</a>
</body>
</html>
设置请求方式
我们还可以在@RequestMapping注解中指定请求方式。
代码语言:javascript复制@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属性指定参数。
代码语言:javascript复制@Controller
public class HelloContraoller {
@RequestMapping(path = "/hello",params = {"username"})
public String sayHello(){
System.out.println("Hello spring mvc");
return "success";
}
}
如果没有参数,则不执行该方法。
参数绑定
方法中添加参数值,在提交参数的时候,mvc框架会帮我们拿到该值并传入到方法里面。
代码语言:javascript复制@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";
}
}
参数绑定实体类
定义一个接收参数的实体类
代码语言:javascript复制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类:
代码语言:javascript复制 }
@RequestMapping(path = "/tijiao",params = {"username","password"},method = RequestMethod.POST)
public String submit(Person person){
System.out.println(person);
return "success";
}
这里只需要设置传入参数为定义的实体类就行。
submit页面:
代码语言:javascript复制<%@ 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.cn/119928.html原文链接:https://javaforall.cn