springmvc 课前知识补充

常用网址

课程录屏b站链接
课程资料百度网盘链接链接:
提取码:ynx4


AOP concepts这一节好好读一读,背下来。读spring作者写的书。

补充

mybatis配置文件

  • 核心配置文件
  • mapper文件

核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 一个配置文件
 
配置环境(多个)
	事务管理,JDBC,手工管理,spring整合了交给了spring
	数据源,四项基本属性。
-->
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
    <!-- 
	每次写完一个Mapper.xml记得引入。
-->
    
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

详细配置

http://www.mybatis.org/mybatis-3/zh/configuration.html

settings里面的内容是最多,但是几乎都是不用修改,默认就是最好。

性能控制,交给数据源。

没有生产级别的能力。

要抄袭

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

CRUD的那个配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

mybatis核心知识:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html

maven依赖

  1. 你的配置本身写错了。
  2. 网络问题
    1. 查看少了哪个
      1. 真的少了,关闭项目
      2. 删除本地仓库里面的目录
      3. 重新打开项目
      4. reimport
  3. 去中央仓库里面找

lombok

1 添加依赖

2 添加idea lombok 插件

思路不清晰

  • 画流程图 推荐使用 draw.io
  • 写伪代码

1 我要获取参数

2 参数传递到牟

3 怎么样处理

4 处理该去哪

前面的从处理和语言没关系。

咩有选用什么技术。

mybatis结构不清晰(文件放置在哪)

  • 约定俗成

  • maven

    • java代码都应该java文件夹

      • 按照业务
        • com.alibaba.pay
          • model
          • mapper
          • service
          • web/servlet
        • com.alibaba.user
          • model
          • mapper
      • 按照通用语义
        • com.alibaba
          • .moldel
          • mapper
            • UserMapper
            • PayMapper
    • 所有非java文件在resource下

HTTP协议,找官网

找官网:

1 能用谷歌

2 不能用就用必应国际版:https://cn.bing.com/?ensearch=1&FORM=BEHPTB

HTTP协议:

作为开发人员简单了解,网络工程师,必须要精通。

http:协议,取决于协议制定者怎么写,怎么来。

https://tools.ietf.org/html/rfc2616

    • 控制行为
  • body

    • 承载信息
  • HTTP状态码

    • 2系列
    • 3系列
    • 4系列
    • 5系列

TCP/IP 三卷

配置webservlet,监听器,参数传递(HttpRequest这些对象),

配置webServlet

XML为主?

注解为主?

@WebServlet,只有urlPatterns是重要的。

get post 请求区别?

从HTTP规范来讲,二者仅有一个区别,就是语义。

从表象来讲。

所有的表象的区别都是浏览器本身的限制和get post本身没关系。

监听器属于web规范里面组件,属于servlet。

设计这个监听器目的在于什么?

监听某些东西。

装了个摄像头,只要触发了某个事情,那么这个组件立马工作。

基于事件驱动,类似于,js里面点击事件。

监听器的优先级是最高的,spring也是用监听器来完成上下文初始化。

key=v&k=v&k=v

javaee规范,ee5 ee6 ee7 ee8

servlet完整规范

https://jcp.org/aboutJava/communityprocess/final/jsr369/index.html

[外链图片转存失败(img-9KSszqVg-1566118395691)(assets/1566097472159.png)]

做邮件开发

https://jcp.org/en/jsr/detail?id=919

[外链图片转存失败(img-nf9aZsj6-1566118395693)(assets/1566097554920.png)]

AOP

https://docs.spring.io/spring/docs/5.1.9.RELEASE/spring-framework-reference/core.html#aop

概念,背下来:5.1. AOP Concepts

在这里插入图片描述

https://zh.wikipedia.org/zh-hans/%E9%9D%A2%E5%90%91%E5%88%87%E9%9D%A2%E7%9A%84%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1

早期的工作是关于反省机制和元对象协议的;1997年Gregor Kiczales发表了论文《面向侧面的程序设计》(Aspect Oriented Programming)。

https://www.eclipse.org/aspectj/

https://www.amazon.com/exec/obidos/ASIN/0321245873/qid=1112868888/sr=2-3/ref=pd_bbs_b_2_3/103-5274059-2049410

连接点和切点区别?

代理技术:

​ JDK代理

​ cglib

​ 静态代理动态代理

spring XML(两个对象报错)

注册同类型的两个bean

给bean取名,区分一下。

否则spring上下文里面有多个bean满足,它无法确定用哪个。

web重点

HttpServletRequest

HttpServletResponse

servlet编写

有几种方式?

  • 实现Servlet接口
  • 继承GenericServlet
  • 继承HTTPServlet

servlet生命周期

  • init
    • 如果一个servlet配置过load on start up 那么就会在我们的容器启动之后就完成初始化
    • 如果没有配置过load on start up ,就是第一次访问这个servlet的时候完成初始化。
    • 如果没有访问过,一辈子不执行
    • 并且生命周期里只有一次
  • service
    • 访问一次执行一次。所以业务逻辑都在这个里面写(已经init)
  • destroy
    • 容器销毁,它就会执行。它一定会执行吗?
    • 如果一个servlet从未初始化,那么它没有机会执行
    • 如果一个servlet初始化过,它才可能执行。
    • 一个servlet的service方法没有执行过,但是destroy却执行过。

基础案例

url写法

@WebServlet(urlPatterns = "/s1")
  • urlPatterns

    • 一定要以/开头

    • 第二个匹配规则,谁跟我更像,就和谁匹配。

/s1去匹配
/s1
和/* 优先匹配/s1

先精由于后精

/s/a/a

匹配

/s/*/a

/s/a/*

二者都满足,但是/s/a 更优先的匹配,因为它可以更早的限定uri,所以它更精确。

request

private static final String METHOD_DELETE = "DELETE";
private static final String METHOD_HEAD = "HEAD";
private static final String METHOD_GET = "GET";
private static final String METHOD_OPTIONS = "OPTIONS";
private static final String METHOD_POST = "POST";
private static final String METHOD_PUT = "PUT";
private static final String METHOD_TRACE = "TRACE";
private static final String HEADER_IFMODSINCE = "If-Modified-Since";
private static final String HEADER_LASTMOD = "Last-Modified";

用于判断使用,是否更新,没有更新告诉浏览器,资源没更新,用缓存,别问我。提高性能的。

request对象里面基本上都是get XXX的方法。

OOP的封装,客户端发起一个请求。所以我们servlet规范要求,servlet实现的厂商必须按照要求,将所有的信息封装在请求对象里面

比如tomcat。

我们这个请求对象,哪里来的?

servlet容器帮我们创建的,当一个请求到达后,容器会自己去包装一个请求对象,然后再入参。

  • getParameter()

  • 控制行为才需要使用

  • 重要方法

  • getParameter

  • getAttribute

  • setAttribute

  • setCharacterEncoding

  • getCookies

  • getParameterValues 获取复选框值

  • setHeader 控制浏览器行为

  • getHeader 根据客户端信息做控制

响应对象重要方法

  • getWriter
  • getOutputStream
  • 上面两个都是用于输出数据的。
  • 二者不可同时使用。除非你使用了一个流然后再使用另一种流之前进行reset,重置才可以使用新的类型的输出流。

网页上之所以能看到信息,最终都是通过writer write出去的。

  • setstatus 设置响应状态码
  • setDateHeadeer
  • sendError
  • seneRedirect
  • setContentType

过滤器 监听器

过滤器。

过滤数据。

过滤器可以轻松实现权限机制。

敏感字 过滤器里面检查请求,查看请求里面 的数据,把这些敏感字全部替换成**

替换工作。

过滤区分先后顺序。

如果有多个,千万千万搞定顺序。

(doFilter)

初始化不重要。

多个过滤器配置在web.xml

链式设计,责任链模式。

过滤器逻辑(如果大家都能够匹配该请求的前提下,谁声明在前面,谁优先执行)

监听器>过滤器>servlet

了解其历史。

转发重定向

转发,是服务端的一种定位技术,言下之意,就是客户端是不知情的,对于客户端来讲,它只发起了一次请求。

重定向属于客户端的技术,客户端重新发起了请求。不止一次请求。

官网

http://www.mybatis.org/mybatis-3/

http://www.mybatis.org/mybatis-3/zh/index.html

http://spring.io/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringMVC的核心知识点包括以下内容:@Controller类注解、SpringMVC控制器类、SpringMVC核心配置类。 @Controller是SpringMVC框架中的一个注解,用于定义控制器类,表示该类是一个用于处理请求的控制器。 SpringMVC控制器类是指使用@Controller注解标注的类,它负责接收请求并调用相应的业务逻辑进行处理。控制器类中的方法通常使用@RequestMapping注解来映射具体的URL请求路径。控制器类可以处理不同的请求,根据请求的URL路径和请求方法的不同,执行相应的方法逻辑。 SpringMVC核心配置类是用于配置SpringMVC框架的配置类,它负责设置相关配置,例如扫描controller包、加载Controller控制器bean等。通过配置类,我们可以对SpringMVC框架进行进一步的个性化定制和配置。 总结起来,SpringMVC的核心知识点包括使用@Controller注解定义控制器类,编写控制器方法来处理请求,以及配置SpringMVC框架的核心配置类。这些知识点是SpringMVC框架中重要的组成部分,用于实现请求的分发和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JAVA最全的核心知识点.rar](https://download.csdn.net/download/qq_37196324/12575426)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringMVC知识点](https://blog.csdn.net/qq_52822200/article/details/126799608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值