Springmvc初学

什么是springmvc

springmvc框架它是spring框架的一个分支。它是按照mvc架构思想设计的一款框架。springmvc的主要作用: 接收浏览器的请求数据,对数据进行处理,然后返回页面进行显示。

为什么要学习springmvc

如何使用springmvc?

1.创建maven的web工程并把依赖引入

<dependencies>

<!--springmvc依赖-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>5.2.15.RELEASE</version>

</dependency>

</dependencies>

2.创建springmvc配置文件

<?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

<!--1.包扫描-->

<context:component-scan base-package="com.ykq.controller"/>

<!--2.开启注解驱动-->

<mvc:annotation-driven/>

<!--3.视图解析器-->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!--前缀-->

<property name="prefix" value="/views/"/>

<!--后缀-->

<property name="suffix" value=".jsp"/>

</bean>

</beans>

3.注册公共的servlet ---DispatcherServlet

<?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>spring01</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!--加载spring配置文件-->

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring01.xml</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>spring01</servlet-name>

<!--访问任何路径都会经过servlet-->

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

4.编写controller类

@Controller //表示该类为控制层类.

@RequestMapping("/book")

public class BookController {

@RequestMapping("/index") //当访问index路径时会映射到该方法。

public String index(){ //业务代码

System.out.println("~~~~~~~~~~~~~~~~~~~~~~~");

return "hello";//经过视图解析器。/views/hello.jsp

}

@RequestMapping("/add") //当访问index路径时会映射到该方法。

public String add(){ //业务代码

System.out.println("************************");

return "add";//经过视图解析器。/views/hello.jsp

}

}

5.总结springmvc的流程

  1. 客户端发生请求http://localhost:8080/book/index

  2. 来到tomcat服务器。

  3. springmvc的前端控制器DipatcherServlet接受所有的请求。

  4. 查看你的请求地址和哪个@RequestMaping匹配。

  5. 执行对应的方法。方法会返回一个字符串。

  6. 把该字符串经过视图解析器拼接。 /前缀/字符串.后缀

  7. 拿到拼接的地址,找到对应的网页。 /views/hello.jsp

  8. 渲染该网页给客户

6.处理静态资源

静态资源:网页中见到: js,css,image,html都是静态资源。

因为springmvc拦截所有的资源。包含静态资源路径。如访问/images/2.jpg 默认找@RequestMapping路径。而springmvc并每个该路径。我们正常不经过让springmvc找@RequestMapping. 我们应该告诉springmvc不处理这种资源路径。

在springmvc配置文件中加入下面的内容即可放行静态资源。

<!--3.放行静态资源-->

<mvc:default-servlet-handler/>

7. 接受参数

7.1 接受少量参数(如删除操作传递id)

7.2 接受大量参数

如添加操作 修改操作。应该封装一个实体类。必须保证实体类的属性要和参数的名字一致。

7.3 解决乱码问题(编码过滤器)

@WebFilter(urlPatterns = "/*")

public class EncodingFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

servletRequest.setCharacterEncoding("utf-8");

servletResponse.setCharacterEncoding("utf-8");

filterChain.doFilter(servletRequest,servletResponse);//放行

}

@Override

public void destroy() {

}

}

7.4 处理日期参数(@DateTimeFormat注解)

相关推荐
跨境数据猎手3 小时前
京东开放平台商品详情接口(jd.item_get):签名、缓存与批量采集
java·spring·缓存
霸道流氓气质4 小时前
Spring AI提示词模板与动态变量替换
java·python·spring
Whyn5 小时前
Servlet 学习笔记
spring
ofoxcoding5 小时前
Claude Fable 5.1 API 接入指南:模型标识、五级定价策略、effort 参数与缓存 TTL 配置详解
java·spring·缓存·ai
摇滚侠6 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 Spring Framework 的事务管理 阅读笔记 34
spring boot·笔记·spring
霸道流氓气质10 小时前
Spring AI异常处理与重试机制
java·人工智能·spring
小江的记录本16 小时前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画
宸津-代码粉碎机17 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
user_admin_god19 小时前
数据采集/交换系统设计经验
spring boot·spring·策略模式
学代码的CJY21 小时前
Linux 重定向、管道与环境变量
linux·spring boot·spring