springMVC笔记一

1. 三层架构和MVC设计模式

a、三层架构
	web层-- 表现层: 处理用户的请求和相应
		技术:servlet
	service层:业务层, 编写业务,处理业务逻辑,编写事务
		技术:spring
	dao层:持久层,数据的增删改查
		技术:jdbc -- dbutils -- jdbcTemplate -- mybatis(主流) -- spring data jpa(趋势)
b、mvc设计模式
	M:model --模型: pojo类,封装数据 , 广义上说:dao + service + model = 业务模型层
	V:view -- 视图: jsp,html,freemarker:展示数据, 广义上讲:只要能展示数据就是视图
	C:cotroller --控制层:servlet :处理用户的请求和相应

2. springMVC的概念

  1. springMVC是spring体系中的一个子项目
  2. springMVC是开源的轻量级框架
  3. springMVC是满足了mvc设计的模式的一个表现层框架
  4. 表现层框架大多都满足了MVC设计模式

3. SpringMVC的HelloWorld(重点)

1、引入依赖

<!--spring的核心-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    <!--springMVC的jar包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    <!-- servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <!--
        maven 项目执行分为三个阶段
          编译(需要)  测试(需要)  运行(不需要)
          provided : 编译器生效,测试生效,运行不生效

         servlet-api ,jsp-api:这两个包,需要配置依赖范围为provided ,其他都不需要
      -->
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

2、spring-mvc.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解,扫描包-->
    <context:component-scan base-package="com.itheima"></context:component-scan>
</beans>

3、web.xml配置

<!--配置servlet:前端控制器-->
  <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--servlet中配置局部参数:读取配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

4、自定义核心控制类

@Controller
public class TestController {

    @RequestMapping("/test")
    public void test(){
        System.out.println("helloWorld--测试成功");
    }

}

5、页面配置

<a href="${pageContext.request.contextPath}/test">请求1</a>
<a href="/test">请求2</a>

4. 入门案例的执行过程及原理分析

在这里插入图片描述

5. @RequestMapping注解(重点)

1. @RequestMapping 请求路径映射,该注解可以标记在方法上,也可以标记在类上
   标记在类上用来窄化路径
2. 属性
	path:指定请求路径,别名value,所以属性名可以省略
	method: 请求方式: 
		get: 路径和超链接请求都是get请求
		post: 必须在表单中实现
	params:声明请求路径的规则 -- 了解
		"name":路径中必须有name
		"age>20":路径中必须有age>20
		"!name" :路径中不存在name

6. 参数的绑定(重点)

1. 表单中提交的name值与方法中的参数(简单类型)名称一致,就可以直接获取到
2. 方法的参数:pojo类型
	只要保证表单提交的name值与pojo的属性名一致,就可以封装数据
3. @RequestParam:请求参数绑定,name与参数名不一致
	属性: value, name可以指定页面表单中的name值
	requird: 是否必须的  , false ,不必要的(可有可无), true:必须有该参数
	defaultValue: 默认值,如果页面传参了,则使用页面传参的值,如果没有指定,则使用默认值
4. 特殊情况:(自定义类型转换器)要转换类型是Date类型
	1)自定义类型转换类
	/**
 *
 * 自定义类型转换器
 *      将字符串格式转换为日期格式
 *      1. 实现接口converter<S,T>
 *                S:源类型 -- String
 *                T:目标类型-- Date
 * @author 黑马程序员
 * @Company http://www.ithiema.com
 * @Version 1.0
 */
public class StringToDateConverter implements Converter<String ,Date>{
    /**
     * 类型转换方法
     * @param source  源
     * @return  目标
     */
    @Override
    public Date convert(String source) {
        //日期类型的转换对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        Date date = null;
        try {
            date = sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}
2. 在springmvc.xml文件中配置类型转换工厂
<!--类型转换工厂-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.itheima.converter.StringToDateConverter"></bean>
            </set>
        </property>
    </bean>
3. 在注解驱动中引入类型转换工厂
 		<!--注解驱动: 关联类型转换工厂-->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

7. 编码过滤器(重点)

<!--编码过滤器-->
  <filter>
    <filter-name>CharactorEncoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--配置初始化参数,指定编码格式:拦截的是post请求-->
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <!--
      指定请求编码格式和相应编码格式: 了解,一般不用指定
    -->
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharactorEncoding</filter-name>
    <!--拦截所有的请求:不包含静态资源的-->
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值