Java web

maven3.6.3的使用

配置

修改conf/settings.xml 添加阿里云镜像

<mirror>
   <id>nexus-aliyun</id>
   <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
   <name>Nexus aliyun</name>
   <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
</mirror>

使用

使用maven中的模板创建一个简单的javaweb应用
在这里插入图片描述
在这里插入图片描述

next配置
GroupId:公司域名
ArtifactId: 项目名称。项目文件夹也会按照这个来命名;
最后是版本号
父项目中

 <modules>
      <module>serverlet-01</module>
  </modules>
// 子项目中
   <parent>
       <artifactId>javaweb-02-serverlet</artifactId>
       <groupId>com.zoneyet</groupId>
       <version>1.0-SNAPSHOT</version>
  </parent>

子项目中可以直接使用父项目中的包,子项目不能使用父项目中的内容
打包
不管java还是resources中的文件都会编译到classpath中;默认java目录下的文件仅仅会导出以.java为后缀的文件;

servlet的使用

web.xml文件路由

<servlet>
  <servlet-name>hello01</servlet-name>
  <servlet-class>com.zoneyet.ServletHelloWorld</servlet-class>
</servlet>
<!--指定Servlet的请求路径-->
<servlet-mapping>
  <servlet-name>hello01</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

路由默认从上往下匹配,如果匹配到就返回;

servletContext
可以在多个接口中共享数据
在HttpServlet类的方法中 通过this.servletContext()来获取该类
获取初始化参数
context.getRequestDispatch().forword(req, resp)进行请求的转发;

resp
resp.getOutputStream();不断向输出流中写入文件流;用户大文件的返回
new file.InputStream(“文件路径”) 实例化一个文件读取流对象,可以不断read文件内容,直到返回长度为-1;
URLEncoding.encode(需要编码的字符串, “UTF-8”)
req
req.getParamter(“”)

MVC架构

在这里插入图片描述model层

业务逻辑
Dao层(持久化)
View
展示数据
提供连接发起Servlet请求(a, img等标签)
Controller(servlet)
接受用户的请求,转发给model层进行业务处理
控制视图跳转

过滤器Filter

在servlet和web服务器之间有一层过滤器。可以实现resp和req的处理;
javax.servlet.Filter
web服务器启动的时候,执行初始化方法;
服务器停止的时候,会执行销毁方法;
必须在doFilter 中实现chain.doFilter(req, resp);
同样需要在web.xml中配置,需要过滤哪些路径的下请求;

监听器

GUI中常用

Mybits

重要概念

在这里插入图片描述
使用步骤

  1. 构建一个工具类用来加载resource中关于mysql链接的配置,用SqlSessionFactoryBuilder构建一个SqlSessionFactory,类似一个mysql连接池;
    mybatis-config.xml文件中resource绑定mapper,需要使用mapper的文件路径;不是包路径
  2. 创建表的实体类
  3. 创建该表的查询Interface,在相同目录下创建接口对应的xml用来规定该Interface中具体方法使用的查询语句;
    xml文件中关键名词含义:
    namespace: 对应类所在包的路径(包路径)
    id: 所在名称空间下的类名
    resultType: sql语句返回值的类型,一般指向定义的model类(包路径)
    parameterType: 方法中需要接受的参数类型;sql语句中使用 #{参数名}表示参数
    如果参数是基本类型,直接使用参数名使用。如果参数是对象或map,使用参数的属性或键来使用具体的数据;
    如果创建或者修改数据,最常用的数据类型是map。可以任意指定参数名(map的key);在这里插入图片描述
    resultMapper,将结果集进行映射来保证,实体类属性可以对应上;
  4. 因为java文件夹下默认不能有资源文件,所以需要修改默认maven配置。
  5. 从SqlSessionFactory.getMapper(实体类.class) 通过指定接口获取一个mysql连接,并通过调用接口中的方法来执行sql获取查询结果,最后需要关闭创建的连接;

配置文件的优化

  1. 从java通用配置文件中读取链接信息,并重新命名
  2. 实体类别名
  3. java中在xml中使用,需要用小写,基本类型以 _开头
  4. 开启缓存及懒加载

在这里插入图片描述

Spring

ioc控制翻转
把需要变动的部分拆分出来,通过参数传递的方式交给用户来实现;
这个参数是基于统一的接口实现的
对象由Spring来创建和管理
beans.xml文件在这里插入图片描述
bean标签中的id相当与托管对象的名字;class表示对应对象的类;property相关于该类的属性,通过set方法设置属性;
使用和加载spring配置文件
在这里插入图片描述
ioc有参构造,通过constructor-arg指定参数名称及传递的值;
在这里插入图片描述
bean的作用域:scope 默认为单例模式

隐式的自动转配

在这里插入图片描述

  1. 通过byname或bytype来实现自动转配;
  2. 通过注解来完成自动装填;
    在这里插入图片描述
    在类的属性中使用@Autowired
    在这里插入图片描述
    使用spring中注解的方式装配
    在这里插入图片描述
    在这里插入图片描述
    这四个注解的功能是一致的,都会将类装配到bean中
    完全使用java代码的方式装配bean在这里插入图片描述
    在这里插入图片描述

AOP

代理模式

在这里插入图片描述
InvocationsHandler实现动态代理
在这里插入图片描述

Spring中AOP的使用

原生spring接口方式

  1. 添加依赖
    在这里插入图片描述
  2. 绑定切入点
    在这里插入图片描述
  3. 测试
    在这里插入图片描述
    切面方式 自定义类
  4. 定义切片中执行的类
  5. 绑定切片方法,执行的位置,(哪些方法的执行前/后)
    在这里插入图片描述
    注解方式
    在这里插入图片描述
    在这里插入图片描述
    spring整合mybatias
    在这里插入图片描述

springmvc

执行流程
在这里插入图片描述
代码整合

  1. 整合dao层(mybits)
  2. spring层(Service层注入到Spring;声明数据库事务及数据源)
  3. mvc层整合
    在这里插入图片描述

拦截器

类似filter。aop思想
区别只会拦截control层,并不会拦截静态文件,提高了效率
配置到spring中
/**
定义拦截器
在这里插入图片描述
perHandle中返回false,那么阻止这个请求

SpringBoot

pom.xml的parent中维护者spring的依赖

启动器

在这里插入图片描述

启动代码

@SpringBootConfiguration
    @Configuration  // 该类为spring的一个配置
        @Component  // 该类为spring的一个组件
@EnableAutoConfiguration  // 自动配置
	@AutoConfigurationPackage  // 自动配置包
	    @Import(AutoConfigurationPackages.Registrar.class)  // 自动注册包
    @Import(AutoConfigurationImportSelector.class)  // 导入选择器
    
  1. @ComponentScan说明该注解下的类会将该类注册到Spring中
  2. @SpringBootConfiguration @EnableAutoConfiguration

Dao层

spring统一使用SpringData来访问
Dao层包括数据源SpringData和数据连接池 ConnectSession依赖数据连接drive和jdbc以及Spring中的数据库连接池
在这里插入图片描述
执行查询
执行原生查询操作
执行插入操作
jdbcTemplate自动提交了事务
更新数据及传参
?可以作为一个sql语句的占位符

配置Druid

简介:一个带有监控功能的数据库连接池的实现
在这里插入图片描述

整合Mybitas

实现类似ORM的功能;使程序操作数据更加面向对象
将sql语句和代码隔离开

springboot异步
  1. 开启异步注解功能
    在这里插入图片描述
  2. 使用注解告诉spring框架,该方法为一个异步方法
    在这里插入图片描述
定时任务
  1. 开启定时任务
    @EnableScheduling

  2. 标记某个方法为定时执行
    在这里插入图片描述

集成数据源

Spring Data 中介绍了集成mysql redis mongo等等数据源
spring data

springboot中集成redis
在创建项目的时候,
勾上 所有开发工具
勾上 spring wb
勾上 NoSQL 中的Redis

redis数据的序列化
在操作redis时,不能传递对象,只能传递一个序列化后的对象
因为默认的RedisTemplate会将jdk中默认的序列化器来进行对象的序列化,就会出现序列化失败,或存入之后乱码的问题

自定义redisTemplate
在这里插入图片描述

引用自定义的redisTemplate
注入redisTemplate;因为其和框架中默认的RedisTemplate类型相同,因此需要使用Qualifier+来直接指定id即方法或类的名字
在这里插入图片描述

集成redis工具类
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岳大博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值