day28springMVC xml和注解

Java注解之@PathVariable,一文掌握@PathVariable注解知识(1) 在一个控制器方法中定义多个注解很简单,只需在方法参数中添加多个注解,并指定每个注解对应的 URL 路径变量名称即可。例如,下面的示例代码中,控制器方法中定义了两个注解,分别对应路径变量{id}和{name}// ...在上述示例代码中,注解的value属性值指定了 URL 路径变量的名称,它们分别对应了方法参数id和name,在处理请求时,Spring MVC 会将它们对应到请求 URL 中的路径变量。注意,在定义多个。 阅读详情

一、知识点
1 三层架构介绍
咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序
使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构
三层架构
o表现层:WEB层,用来和客户端进行数据交互的。
o业务层:处理公司具体的业务逻辑的。
o持久层:用来操作数据库的。
2 MVC设计模式介绍
MVC全名是Model View Controller 模型视图控制器,每个部分各司其职。
oModel:数据模型,JavaBean的类,用来进行数据封装。
oView:指JSP、HTML用来展示数据给用户
oController:用来接收用户的请求,整个流程的控制器。用来进行数据校验等

MVC全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面 显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于 映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
Model-View-Controller 这种设计模式的最主要的目的就是解耦合又叫松耦合(不一样的功能,最好占用不同的模块,和别的模块之间的直接关系越少越好,越少越利于二次开发、扩展和维护)。
各模块职责:
Model 层与数据库直接交互,负责读写数据;
View 层直接与用户交互,负责向用户展示数据(使用不同的样式)或者接收用户的输入;
Controller 层则根据 View 层的用户输入调用Model 层的逻辑读写相关数据,并将数据选择适当的视图模板生成对应的 View 层展示效果。
总结
根据 MVC 模式开发的程序结构清晰易于维护,如果需要修改数据的展示样式时,只需要修改View 层对应的代码就可以了,比起不使用 MVC 的程序,在改动时被牵一发动全身恐惧所支配,实在是方便了不少。
3 SpringMVC简介
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。

4 请求流程

1.用户发送请求至前端控制器DispatcherServlet
2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5.执行处理器(Controller,也叫后端控制器)。
6.Controller执行完成返回ModelAndView
7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9.ViewReslover解析后返回具体View
10.DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11.DispatcherServlet响应用户
以上流程是以DispatcherServlet为核心轴,并且DispatcherServlet就是一个Servlet

5 XML方式
5.1 创建项目并导包
创建web项目,已经非常熟悉,不再多说
需要导入的包支持

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>demo</name>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <junit.version>5.7.0</junit.version>
        <spring.version>5.2.5.RELEASE</spring.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <!--Spring核心基础依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- 增加了切面 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.5</version>
        </dependency>

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

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

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

        <!--日志相关-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--测试相关-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>

        
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.0</version>
            </plugin>
        </plugins>
    </build>
</project>

5.2 配置文件
5.2.1 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
    <display-name>SpringMVC_01_Basic</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <!-- 设置所有请求拦截到分发器
                         第一种 如果SpringMVC的配置文件,和web.xml在同一个目录
                         比如 MVC配置文件名字叫 basic-servlet.xml
                         只需要把servlet-name的值 设置为basic就可以,
                         但是 MVC配置文件的名字必须是xxx-servlet.xml的格式 -->
        <servlet-name>basic</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 指定配置文件-->
        <!-- <init-param> -->
        <!-- <param-name>contextConfigLocation</param-name> -->
        <!-- 可以放在任何地方 -->
        <!-- <param-value>/a/b/c/d/xxxxxxxxx.xml</param-value> -->
        <!-- 放在src下 -->
        <!-- <param-value>classpath:xxxxxxxxx.xml</param-value> -->
        <!-- </init-param> -->
      	<!-- 项目启动就会加载这个servlet -->
  			<load-on-startup>1</load-on-startup>	  
  	</servlet>
    <servlet-mapping>
        <servlet-name>basic</servlet-name>
        <url-pattern>/</url-pattern>
        <!--
                         /* 会拦截jsp文件
                         / 不会拦截jsp
         -->
    </servlet-mapping>
</web-app>

5.2.2 basic-servlet.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 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
                  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
                  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
    <!-- 使用XML进行映射
            MVC框架基本两个点
                              1 url怎么映射进去进行处理
                              2 处理完如何找到视图
    -->
    <!-- 处理映射器配置-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!-- 创建映射,配置映射器,name必须是 / 打头-->
    <bean name="/w" class="com.tledu.controller.XmlMappingController"/>

    <!-- 视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

5.3 控制器类

package com.tledu.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class XmlMappingController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        System.out.println("Welcome~");
        return new ModelAndView("welcome");
    }
}

5.4 jsp页面
视图解析器这里,我们指定了文件的目录和后缀
当controller返回了welcome的时候 就会去找WEB-INF/jsp/welcome.jsp
需要创建对应的jsp

<%--
  Created by IntelliJ IDEA.
  User: cyrus
  Date: 2021/04/07
  Time: 0:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    欢迎来到天亮教育
</body>
</html>

5.5 运行测试
运行web程序,浏览器输入
http://localhost:8080/SpringMVC_01_Basic/w

5.6 小结
1.创建项目,引入依赖
2.配置web.xml
a.因为现在,所有请求,我们都希望通过spring mvc进行管理
b.配置servlet
i.name
ii.class:对应的路径(DispatchServlet)
c.配置了servletMapping
i.servlet-name: 对应到上面的名字
ii.地址 /
3.配置Spring
a.文件的位置要和web.xml同级
b.文件名字和servlet中servlet的名字对应上
i.servlet名字-servlet.xml
c.配置MappingHandle的实例
i.
ii.配置映射关系
iii.配置 视图解析器
4.实现Controller
a.extends AbstractController
b.实现一个抽象方法
i.返回一个ModelAndView
6 注解方式
6.1 配置文件

<?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 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
                  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
                  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
         <context:component-scan base-package="com.tledu.zrz.springmvc.controller"/>
         <mvc:annotation-driven />
         <!--视图解析器 -->
         <bean
                  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                  <property name="prefix"value="/WEB-INF/jsp/"/>
                  <property name="suffix"value=".jsp"/>
         </bean>
</beans>

1.配置包扫描,需要能把controller放到spring容器管理
2.添加一个Controller类,并加上Controller注解
3.类上加@RequestMapping(""),配置地址和controller的映射关系
4.在方法上加@RequestMapping(""),配置地址和方法的映射关系
5.执行方法,并返回一个字符串,这个字符串就是view-name

6.2 常用注解

  1. @Controller
    

使用Controller注解之后,在方法上可以通过return的jsp或者html页面的名字,通过视图解析器,就能跳转到指定页面
如果没有Controller注解,这个类中的方法是不会被请求过去的
所对应的层也是controller层,表现层
2. @RestController
RestController注解相当于Controller和ResponseBody一起使用
这个类中的方法可以被请求过来,但是方法中无法jsp和html页面,视图解析器就不会起到作用,返回的内容就是return后面的内容
3. @RequestMapping
是Spring Web应用中最常用到的注解之一,这个注解会将http请求映射到MVC和Controller控制器的处理方法上
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
4. @RequestBody
@RequestBody 主要用于接收前端通过 请求体 传递给后端的JSON字符串中的数据
GET方式无请求体,所以使用@RequestBody的时候不能使用GET方式,而应该使用POST形式
5. @RequestParam
用于接收前端传递过来的url中的参数(key=value)的形式
主要用于接收前后端key不一致的时候,使用@RequestParm来指定获取
6. @PathVaraible
@PathVaraible主要用于获取url请求中的动态参数的
如
@RequestMapping(“/delete/{id}”)
public String delete(@PathVaraible(“id”) int id){}
当RequestMapping中需要动态传递过来参数的时候,需要通过@PathVaraible来接收
7. @ResponseBody
如果方法需要返回JSON或者XML或者自定义内容到页面中去,就需要再方法上加上ResponseBody,这个时候,返回的数据就会不被视图解析器所解析
8. SessionAttributes注解
用于多次执行控制器方法间的参数,可以通过value指定存入属性的名字
比如 :

package com.tledu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;

@Controller
@RequestMapping(path="/hello")
@SessionAttributes(value= {"username","password","age"},types=
        {String.class,Integer.class})
public class HelloController {
    /**
 * 向session中存入值
 * @return
 */
@RequestMapping(path="/save")
    public String save(Model model) {
        System.out.println("向session域中保存数据");
        model.addAttribute("username", "root");
        model.addAttribute("password", "123");
        model.addAttribute("age", 20);
        return "success";
    }
/**
 * 从session中获取值
 * @return
 */
@RequestMapping(path="/find")
public String find(ModelMap modelMap) {
    String username = (String) modelMap.get("username");
    String password = (String) modelMap.get("password");
    Integer age = (Integer) modelMap.get("age");
    System.out.println(username + " : "+password +" : "+age);
    return "success";
}
/**
 * 清除值
 * @return
 */
@RequestMapping(path="/delete")
public String delete(SessionStatus status) {
    status.setComplete();
    return "success";
}

}

6.3 控制器类和参数绑定
6.3.1 RequestMapping详解

  1. RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系
  2. RequestMapping注解可以作用在方法和类上
    o作用在类上:第一级的访问目录
    o作用在方法上:第二级的访问目录
    o细节:路径可以不编写 / 表示应用的根目录开始
    o细节:${ pageContext.request.contextPath }也可以省略不写,但是路径上不能写 /
  3. RequestMapping的属性
    opath 指定请求路径的url
    ovalue value属性和path属性是一样的
    omethod 指定该方法的请求方式
    GetMapping
    PostMapping
    PutMapping
    DeleteMapping
    oparams 指定限制请求参数的条件
    oheaders 发送的请求中必须包含的请求头

6.3.2 参数绑定说明
6.3.2.1. 请求参数的绑定说明

  1. 1 绑定机制
  2. 表单提交的数据都是k=v格式的username=haha&password=123
  3. SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
  4. 要求:提交表单的name和参数的名称是相同的

2.1 支持的数据类型

  1. 基本数据类型和字符串类型
  2. 实体类型(JavaBean)
    3.集合数据类型(List、map集合等)

6.3.2.2. 基本数据类型和字符串类型
提交表单的name和参数的名称是相同的
区分大小写
如果名称不相同可以通过@RequestParam(“user”),指定参数名字
如果参数是必传的@RequestParam(required = true)

6.3.2.3. 实体类型(JavaBean)
提交表单的name和JavaBean中的属性名称需要一致
如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name

6.3.2.4 给集合属性数据封装
表单提提交
olist:多个同名属性设置list
获取通过json的方式进行提交
o需要设置注解@RequestBody
6.3.2.5 请求参数中文乱码的解决

  1. 在web.xml中配置Spring提供的过滤器类
<!-- 配置过滤器,解决中文乱码的问题 --> 
<filter> 
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>

6.3.2.6 自定义类型转换器

  1. 表单提交的任何数据类型全部都是字符串类型,但是后台定义Integer类型,数据也可以封装上,说明Spring框架内部会默认进行数据类型转换。
  2. 如果想自定义数据类型转换,可以实现Converter的接口
    1.自定义类型转换器
package com.tledu.spring_mvc_basic.utils;


import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringToDateConverter implements Converter<String, Date> {

    @Override
    public Date convert(String source) {
        // 判断
        if(source == null) {
            throw new RuntimeException("参数不能为空");
        }
        try {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
// 解析字符串
            Date date = df.parse(source);
            return date;
        } catch (Exception e) {
            throw new RuntimeException("类型转换错误");
        }
    }

}
  1. 注册自定义类型转换器,在springmvc.xml配置文件中编写配置
<!-- 注册自定义类型转换器 --> 
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters"> 
<set>
<bean class="cn.itcast.utils.StringToDateConverter"/> 
</set> 
</property> 
</bean> 
<!-- 开启Spring对MVC注解的支持 --> 
<mvc:annotation-driven conversion-service="conversionService"/>

json里日期参数格式化可以使用@JsonFormat(pattern = “yyyy/MM/dd”)注解进行配置

6.3.2.7 在控制器中使用原生的ServletAPI对象
1.只需要在控制器的方法参数定义HttpServletRequest和HttpServletResponse对象
2.通过注入的方式也可以获取

6.3.3 参数绑定使用
5 为了方便向视图层传值,提供了 Model 专门向视图层传递数据
请求为 http://localhost:8080/SpringMVC_01_Basic/hello?username=root
@RequestMapping("/hello")
public String hello(String username,Model model) {
// 键值对,页面可以通过username获取对应的值
model.addAttribute(“username”, "Hello : "+username);
// 参数是值,页面需要根据值的类型的首字母小写获取
model.addAttribute(username);
// 如果 类名前两个字母都是大写,就不会把首字母转换为小写了
return “hello”;
}

Hello~
${username }
${string }

6 多个Url映射到同一个方法上
请求为 http://localhost:8080/SpringMVC_01_Basic/hello?username=root

@RequestMapping({"/hello","/h","/hi"})
     public String hello(String username,Model model) {
              model.addAttribute("username", "Hello : "+username);
              return "hello";

}
这时候/hello 和/h 以及 /hi 请求 都会来执行这个方法

SpringMVC中使用JacsonXML在Controller用@ResponseBody接收xml文件 本人Java新人,整这玩意还挺费劲,好不容易搞出来了,当作一个小笔记吧 主要的代码都粘上来了 pom.xml文件 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.0</version> < 阅读详情

相关推荐

Spring第一讲:初步了解Spring

创建项目 创建好项目后,第一步在pom文件里面添加相关的依赖 附上pom文件代码: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

qq_52185040的博客 650

mvcday01

Spirng Mvc 三层架构介绍 咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序 使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构 三层架构 表现层:WEB层,用来和客户端进行数据交互的。 业务层:处理公司具体的业务逻辑的。 持久层:用来操作数据库的。 MVC设计模式介绍 MVC全名是Model View Controller 模型视图控制器,每个部分各司其职。 Model:数据模型,JavaBean的类,用来进行数据封装。 View:指J

Lakn_an的博客 447

SpringMVC知识 day02 常用注解&响应数据&文件上传

一、常用注解 1.1 RequestParam 1.1.1 使用说明 作用: 把请求中指定名称的参数给控制器中的形参赋值。 属性: value:请求参数中的名称。 required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。 1.1.2 使用示例 1.2 RequestBody 1.2.1 使用说明 作用: 用于获取请求体内容。直接使用得到是 key=value&k...

小陈工的博客 928

@PathVarible详解

@PathVarible @PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值 语法: @PathVariable("xxx") 通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“) @RequestMapping(value=”user/{id}/{name}”) 请求路径:http://localhost:8080/hello/show5/1/james 测试环境: 环境:jdk1.8

pjh88的博客 2587

ABAP BOM展开避坑指南:CS_BOM_EXPL_MAT_V2函数参数配置详解

本文深入解析了SAP ABAP开发中用于物料清单展开的核心函数CS_BOM_EXPL_MAT_V2。针对其复杂的参数配置,如CAPID、STLAN、DATUV和MEHRS,提供了详细的避坑指南和最佳实践,帮助开发者避免数据错误与性能陷阱,实现高效、准确的BOM多层展开。

pea55的博客 853

自动驾驶控制算法——MPC控制算法

自动驾驶MPC控制算法摘要 模型预测控制(MPC)是一种基于系统预测模型的先进控制算法,通过滚动优化方式求解最优控制输入。其核心流程包括:1)使用数学模型预测未来系统状态;2)定义优化目标函数衡量预测误差;3)求解满足约束的最优控制序列;4)仅执行第一步控制并重复该过程。 相比传统PID控制,MPC具有预测未来、多步优化、显式处理约束等优势,特别适合自动驾驶中对安全性要求高的场景,如轨迹跟踪、车道保持、联合纵横向控制、自动泊车和动态避障等。MPC通过状态空间模型预测系统行为,在每个控制周期计算未来N步的控制

swaggytiger的博客 7921

SpringMVC注解、@Controller注解和@RestController注解的区别、@RequestMapper、@PathVariable

SpringMVC注解、@Controller注解和@RestController注解的区别、@RequestMapper、@PathVariable

hutao8896的博客 6312

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境 注:本次实验主要是《恶意代码分析实战》一书中进入动态恶意代码分析篇章的开始,主要通过Apatedns以及Inetsim来模拟为恶意代码提供其需要的网络环境,本次实验以Lab01-03.exe为例。 一、实验环境及工具。 Vmware虚拟机:win10(win7)、kali 主要工具:Apatedns、Inetsim 二、工具的安装下载 1、Apatedns:需安装至windows虚拟机客户端(win10,win7均可) 下载地址:http

妙蛙种子吃了都会妙妙秒的妙脆角的博客 7935

SpringMVC Day 11 : 零 xml 配置

今天我们将告别这种繁琐的XML配置文件!在本文中,我们将介绍如何在Spring MVC中实现零XML配置,通过使用全注解和Java配置类来代替传统的XML配置文件。这将使我们的代码更加简洁、可读性更强,并且更加符合现代化的开发模式。 我们将逐步学习如何使用注解来替代XML配置文件的各个方面,包括控制器、请求映射、视图解析器等。通过这种新的方式,你会发现编写和维护Spring MVC应用程序将变得更加轻松和高效。

zhiqiuqiu2的博客 891

新手避坑指南:用PIC16F15355开发板和MCC完成第一个UART通信项目

本文为新手提供了使用PIC16F15355开发板和MPLAB代码配置器(MCC)实现首个UART通信项目的完整指南。通过图形化配置系统时钟、UART参数并自动生成驱动代码,手把手教学如何避开常见陷阱,快速完成从环境搭建、代码编写到调试输出的全流程,助力开发者高效入门PIC单片机开发。

bash7scripter的博客 725

GEE:提取研究区 NDVI/LST/RVI 并进行时间序列线性插值填补缺失像素和Savitsky-Golay(SG)滤波平滑处理

养乐多_本文将介绍使用Landsat数据集,构建时间序列,并使用线性插值算法填补缺失数据,或者去云空洞,并进一步对完整的时间序列数据进行SG滤波处理。

养乐多的博客 3196

Day3-springmvc注解的方式进行跳转的配置

1.springmvc-servlet.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:...

qq_42147998的博客 139

【基于 CasADi 的欠驱动无人船实时非线性模型预测控制(NMPC)实现 Visual Studio 2022 C++】

本文介绍了基于CasADi和IPOPT在Visual Studio 2022 C++环境下实现的欠驱动无人船实时非线性模型预测控制(NMPC)方案。文章详细阐述了NMPC基本原理、欠驱动无人船动力学模型(包含状态变量和控制变量定义),并给出了C++实现的核心代码框架。该方案通过显式引入系统动力学模型和约束条件,在每个采样周期滚动优化控制序列,有效解决了欠驱动无人船的轨迹跟踪与避碰问题。文中还提供了VS2022配置CasADi环境的详细步骤,包括预编译包下载、工程属性设置等关键环节,为工程实现提供了完整的技术

vor234的博客 651

springMvc-day01-入门案例流程和RequestMapping注解

入门案例流程总结: 创建WEB工程,引入开发的jar包 具体的坐标如下:省略… 配置核心的控制器(配置DispatcherServlet) 在web.xml配置文件中核心控制器DispatcherServlet: <!-- SpringMVC的核心控制器 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.sprin

jawnhaha的博客 280

基于NARX和NARX-LSTM的模型辨识与MPC控制系统调试与优化

本文针对两输入单输出非线性系统,提出基于NARX和NARX-LSTM的模型辨识与MPC控制优化方案。系统输入为固定量u1和可调量u2(8.5-140),输出目标为-0.58。现有模型存在辨识精度不足、历史输出依赖过重、预测偏差等问题。解决方案包括:数据差分处理改善非平稳性、调整延迟阶数优化模型结构、引入注意力机制替代手动加权、改进损失函数消除预测偏差。MPC控制器将结合优化模型,考虑控制变量步长约束(≥2),实现输出稳定控制。通过系统性的模型调试与控制算法优化,最终形成完整的非线性系统辨识与控制框架。

huanghm88的专栏 128

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Spring_Day2_SpringMVC注解解析和组件解析

@RequestMapping 请求映射 作用:用于建立请求 URL 和处理请求方法之间的对应关系 位置: 类上,请求URL 的第一级访问目录。此处不写的话,就相当于应用的根目录 方法上,请求 URL 的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径 属性: value:用于指定请求的URL。它和path属性的作用是一样的 method:用于指定请求的方式 params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置

weixin_43899452的博客 168

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringMVC day1028-1030

我们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构。三层架构:表现层:WEB层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型业务层:处理公司具体的业务逻辑的持久层:用来操作数据库的MVC全名是模型视图控制器,每个部分各司其职。Model:数据模型,JavaBean的类,用来进行数据封装。View:指JSPHTML。

2201_75555400的博客 733

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringMVC_day01

下面为你提供一个简单的 SpringMVC 入门案例,这个案例主要实现接收客户端请求并返回响应结果。这里使用 Maven 来管理项目依赖。在 Spring MVC 里,注解的使用能简化开发流程,增强代码的可读性与可维护性。下面为你详细介绍 Spring MVC 中常见的注解。将项目打包成 WAR 文件并部署到 Servlet 容器(如 Tomcat)中,启动容器。首先,创建一个 Maven Web 项目,在。

weixin_41545189的博客 1212

05 SpringMVC:day01\SpringMVC概述及入门案例

05 SpringMVC 01.SpringMVC概述及入门案例 @RequestMapping 来处理多个 URI 01.SpringMVC概述及入门案例 我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构...

Marlon康 392

SpringMVC-day2-基于注解实现与MVC各组件交互流程

SpringMVC 1. 核心组件 SpringMVC框架中提供给用户如下几个概念: DispatcherServlet:(又称前端控制器) 核心控制器,用来过滤客户端发送过来,想要进行逻辑处理的请求 Handler(Controller): 处理器。开发人员自定义,用来处理用户请求的,并且处理完成之后返回给用户指定视图的对象。 HandlerMapping: 处理器映射器。DispatcherServlet在根据URL转发请求给Handler时得有一个匹配规则,这个匹配规则由HandlerMa

weixin_43998127的博客 417

SpringMVC框架学习 day01 SpringMVC的入门案例与RequestMapping注解使用

SpringMVC的入门案例案例1.创建maven的WEB工程2.引入开发的jar包 (坐标)3.配置核心的控制器(配置DispatcherServlet)4. 编写springmvc.xml的配置文件5. 编写index.jsp和HelloController控制器类5.1 index.jsp5.2. HelloController5. 在WEB-INF目录下创建pages文件夹,编写succe...

weixin_46539792的博客 174

day54_springmvc

springmvc开发,springmvc的执行流程,注解开发

沐沐 704

springmvc注解开发方式

MVC是一种架构模型,本身没有什么功能,只是让我们的项目结构更加合理,流程控制更加清晰,一般包含三个组件:Model(模型):数据模型,用于提供要展示的数据。一般包含数据和行为(也就是业务),在JavaWEB中,数据和业务往往是分离开的。View(视图):负责对模型数据进行展示,例如我们看到的网页。概念比较广泛,可以是:html、JSP、excel、Word、PDF、json、XML等Contro...

lunar_16的博客 232

SpringMVC零xml配置原理

SpringMVC零xml配置原理目录概述原理概述不使用web.xml真正的不使用web.xml相关工具如下:分析:小结:参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot and shine forever. Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 304

springMVC_day01

springmvc pom文件 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.c...

YuLeiJavaEE的博客 200
上一篇: day27AOP、整合mybatis、JdbcTemplate
下一篇: ssm整合
小白收容所
博客等级 码龄7年 1粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值