hs20天复习
学习知识点:
1.javaoop复习
数据类型:
基本数据类型:
数值:
整数: byte short int long
小数:float double
字符:
char ‘’
布尔:
boolean true/false
引用数据类型:
数组 类 接口 String
String类型定义的时候:
String s1=“abc”;String s2=new String(“abc”);
s1==s2; //false ==对于对象类型类型比较的是内存地址
s1.equals(s2); //true 比较值是否相等
类型有大类型和小类型之分:
数值类型: 从小到大,从弱到强 byte < short <int<long<float <double
对于引用数据类型来说:
父类 和 子类 之间; 接口和实现类 之间
父类和接口属于大类型; 子类和实现类属于小类型
类型转换: 大小类型之间可以互相转换
小类型转换为大类型: 自动类型转换,向上转型;不会出问题
大类型转换为小类型: 强制类型转换, 向下转型;有可能会溢出,会报异常
涉及到类或接口类型:
小类型转换成大类型: 向上转型;多态本质上属于向上转型
大类型转换为小类型: 有可能汇报ClassCastException: 可以使用instanceof来判断某个对象是否属于某个类型
java面向对象:
万事万物皆对象:
类里面都有属性和方法
创建对象使用new关键字
public class Teacher{
//属性
//方法
}
class Test{
public static void main(String[] args){
Teacher t=new Teacher();
}
}
方法: 表示动态的,行为或者能力,动作等等
方法根据有没参数: 无参的方法和有参的方法
方法根据有没有返回值: 有返回值的方法和无返回值的方法 void
方法根据功能和作用: 构造方法和普通方法
构造方法: 名称跟类名一致,但是没有返回值类型;构造类和对象之间的关系的一个方法;一般在new的时候调用
方法的重载: 本类里面; 参数列表不一样(参数个数或者对应位置类型不一致)
方法的重写: 方法的实现逻辑不一样
面向对象:
特征: 封装,继承,多态
继承只支持单根继承;一个子类只能继承一个父类但是可以同时实现多个接口;
可以通过接口来弥补继承的不足
面向接口编程的思想:
对外提供接口,隐藏接口的实现细节;
接口侧重于约定或者能力
面向服务的编程思想:SOA
面向领域的编程思想:DDD 面向行业的解决方案
关键字:
this: 表示当前对象
super: 表示父类对象
final: 修饰 变量就是常量 修饰类 不能被继承 修饰方法不能被重写
static: static 变量 类变量 static 方法 静态方法 static{} 静态块 第一次使用到该类的时候就自动加载执行
访问权限修饰符: private [default] protected public
2.servlet,jsp复习
bs架构与cs架构区别:
bs: browser server 浏览器服务器结构: 客户端就是浏览器;通过浏览器来访问服务器资源
cs: client server 客户端服务器结构: 富客户端 ;核心逻辑集中在客户端程序
javaweb其实就是bs架构;面向web服务器端编程
servlet:
概念: 服务器上的一个小程序,也是一个容器,接收客户端请求,执行相应的业务逻辑,最终产生响应给客户端浏览器
生命周期: 过程,有开始,执行,结束的过程
init() 初始化方法 service() 执行 destroy() 销毁
load-on-startup 值是个整数值: 加载时机: 表示该servlet什么时候被加载,什么时候被初始化
>=0 表示服务器启动的时候就自动加载执行; 正数的值越小,越先加载
<0 表示浏览器访问的时候加载执行
servlet体系结构:
class 类 extends HttpServlet{
service(HttpServletRequest request,HttpServletResponse response){
}
}
HttpServlet: 跟Http相关的servlet
GenericServlet: 是HttpServlet的父类;跟协议无关的servlet
Servlet,ServletConfig: 接口,最终每个servlet都会实现这2个接口
urlPatterns("/路径"): 注意: /不能省略; 多个urlPatterns值不能重复
request: 类型: HttpServletRequest 封装的是客户端浏览器向服务器发送的所有内容
response: 类型: HttpServletReponse 封装的是服务器给客户端响应的所有内容
request方法:
前台向后台传参数: 后台如何取参数:String request.getParameter(Strring name);
request.setCharacterEncoding(); 设置中文编码; //一般处理post请求里面的中文乱码
get请求里面的中文乱码: tomcat server.xml 71行左右 加上配置 URIEncoding=“utf-8”;
但是tomcat9默认能够处理get请求中文乱码;tomcat9不用配
response.setCharacterEncoding(); //处理response里面的中文乱码
前台请求方法:
get: 走url传输数据; 不安全; 传输数据大小有限制;理论上不超过1M
post: 走请求体;安全;数据大小无限制
后台servlet里面的方法:
doGet(): 处理get请求:
doPost(): 处理的是post请求
service(): 处理的是所有请求
HttpServletRequest request: 请求转发,前后数据能够实现共享
request.setAttribute(String name,Object value) 设置值
Object request.getAttribute(String name) 取值
HttpSession session: 会话,代表某个用户的一系列的操作,比如显示登录的用户名
HttpSession request.getSession(): // 获取session对象
session.setAttribute(String name,Object value) 设置值
Object session.getAttribute(String name) 取值
ServletContext: 代表该项目,表示所有用户都能共享的全局变量,比如实现在线人数
ServletContext application=request.getServletContext();//通过request对象来获取
ServletContext application=session.getServletContext();//通过session对象来获取
application.setAttribute(String name,Object value) 设置值
Object application.getAttribute(String name) 取值
servlet之间的跳转:
请求转发:
request.getRequestDispatcher(String path).forward(request,response);
request对象的方法: 请求转发url不会改变;在服务器端进行;前后数据可以共享
重定向:
response.sendRedirect(String path);
response对象的方法:重定向url会发生改变;在客户端进行;前后数据不能共享
JSP: Java Server Pages
什么是jsp? html+java代码片段组合 ;以html为主,java代码为辅
jsp执行原理: 浏览器访问的时候会转换成一个java文件,而这个Java类继承了HttpJspBase类;HttpJspBase是HttpServlet的子类
说明: jsp本质上就是一个Servlet
JSP语法:
里面的java代码片段语法:
<%@ %> jsp指令 三大指令: page include taglib
<% %> 里面可以定义属性和方法;相当于写在servlet里面的属性和普通方法
<%! %> 小脚本;java代码片段; 逻辑就相当于写在servlet里面service方法里面的逻辑
<%= %> 表达式
<%-- --%> jsp注释
三大指令:
page taglib include
四大作用域:
pageContext: 表示当前jsp页面
request: 请求前后
session: 会话,代表该用户
application: 表示该项目
九大内置对象:系统里面定义好的9个变量,无需重复定义,直接使用即可
- pageContext 页面上下文对象 类型 javax.servlet.jsp.PageContext 作用域 Page
- request 请求对象 类型 javax.servlet.ServletRequest 作用域 Request
- response 响应对象 类型 javax.servlet.SrvletResponse 作用域 Page
- session 会话对象 类型 javax.servlet.http.HttpSession 作用域 Session
- application 应用程序对象 类型 javax.servlet.ServletContext 作用域 Application
- out 输出对象 类型 javax.servlet.jsp.JspWriter 作用域 Page
- config 配置对象 类型 javax.servlet.ServletConfig 作用域 Page
- exception 例外对象 类型 javax.lang.Throwable 作用域 page
- page 页面对象 类型javax.lang.Object 作用域 Page
el表达式:
语法: ${}
取作用域:
pageScope requestScope sessionScope applicationScope
jstl标签库:
-
引入jstl依赖
-
引入jstl标签声明 <%@ taglib prefix="" uri=""%>
-
使用标签
常用标签:
<c:if test> 判断
<c: forEach items="" var=""> 循环
<fmt:formatDate src="" pattern=“yyyy-MM-dd hh:mm:ss”> 格式化日期显示
web服务器:
tomcat服务器:
web项目写好之后需要发布到tomcat服务器里面,然后再启动服务器,通过客户端浏览器来访问服务器
注意: 当代码改动过后,务必要重启服务器
3. spring,mybatis,springmvc框架 以及ssm整合
spring:
http://spring.io 官网
IOC: Inverse Of Control 控制反转 控制权转移, 由程序员主动new对象变成spring容器来给我们创建对象;
创建对象的主动权发生转移
DI: Depencience Inject 依赖注入 控制权转移之后,由spring容器来给给我们创建对象以及注入对象的相关属性
注入方式:
-
设值注入
在spring配置文件通过bean标签来配置javabean,本质上就是通过setter方法来实现注入的,必须有setter方法,否则会报错
-
构造注入
本质上就是通过构造方法来实现注入的,必须有相应参数的构造方法,否则会报错
javabean注入:
ref表示引用另外一个javabean
value表示普通属性注入
自动装配:
在xml文件里面,某个javabeanspring容器里面有的话,可以不用手动装配;可以直接自动装配
属性autowired="" ByName 按名称 ByType 按类型
byName: 对象名和属性名一致的情况选,就自动装配进去
byType: 对象类型和属性类型一致时,就自动装配进去 ;注意: 如果同一种类型的对象只能有一个,否则会报错,不知道该装配哪个
通过注解方式来实现自动装配:
需要在待装配的属性上面写个注解 @Autowired 就表示自动装配
需要在xml里面配置该注解的支持:
AOP: 面向切面编程:
2种写法:
基于xml的写法
基于注解的方法
maven: 项目管理工具,管理依赖用的,在pom.xml文件里面配置,理解他的项目结构
maven project: 就相当于java project
maven web poject: 就相当于web project
如何配置maven; 1. 需要设置本地仓库 2. 需要设置阿里云镜像 2. 需要idea关联本机maven
mybatis:
数据访问层框架;封装的是jdbc;是个orm框架
环境搭建一定要掌握
mybatis配置文件: 连接java程序连接数据库的相关配置
mybatis映射文件:配置对数据库的各种增删改查的sql操作
常用的类:
SqlSessionFactory:
SqlSession session=sqlSessionFactort.openSession(); 创建一个SqlSession对象
SqlSession session=sqlSessionFactort.openSession(true); 创建一个SqlSession对象 ,能够自动提交事务
SqlSession:
selectList(): 查询所有
selectOne() : 查询单个
insert() : 添加
update(): 修改
delete(): 删除
close() : 关闭
commit(): 手动提交事务; 增删改的时候必须要提交事务
getMapper(Class clazz): 获取接口对象
配置别名:2种方式
-
基于xml方式映射
selectList(): 查询所有
selectOne() : 查询单个
insert() : 添加
update(): 修改
delete(): 删除
-
基于接口方式来映射
getMapper(Class clazz): 获取接口对象
-
基于注解方式来映射
不需要写映射文件,直接将sql语句配置在接口对应的方法上面
ResultMap标签: 配置javabean里面属性名和字段名之间的映射关系
1. 能够解决属性名和字段名冲突的情况
2. association标签配置一对一关系
3. collection配置一对多关系
ResultType标签: 只有属性名和字段名保持一致才会查询出对应的结果,如果不一致,该属性没值
动态sql:
标签
判断 标签
能够去除多余的and关键字
set就相当于set关键字,能够去除最后一个多余的,
自定义标签,能够模拟实现where标签和set标签的实现效果
<forEach item="" collection="" index="" sepeartor="" open="" close="”>
foreach 循环
属性:
item: 集合中的每个元素
index: 下标
collection: 集合 值为 list/array/map
separator: 每个元素的分隔符
open: 整个循环以什么开头
close: 整个循环以什么结尾
springmvc:
控制层框架:封装的是servlet
环境搭建:
在web.xml里面配置springmvc的核心分发器 DispatcherServlet:
springmvc.xml文件:
配置视图解析器:
两个属性prefix suffix 前缀和后缀的含义
取值传值:
取值:后台取前台传过来的参数值
1. 通过request对象来取参数值 request.getParameter(String name)
1. 参数名和前台表单name属性值保持一致
1. 参数名和name属性值不一致时,参数前可以加 @RequestParam("")
1. 通过javabean来取值;javabean的属性名必须和前台表单name属性值保持一致
传值: 将后台传到前台,前台使用${}来取值
1. 通过Model对象传值
1. 通过ModelAndView对象传值
1. 通过Map集合来传值
类型转换器:
当前台参数的数据类型和后台类型不一致时,需要写类型转换器
实现接口Converter<源类型,目标类型>
格式转换器:
比如处理Date类型数据的时候,需要格式转换器,因为springmvc取不到date类型,取到的是String类型
实现接口Formatter
这两种转换器都需要在springmvc配置文件里面进行相关配置
ssm整合:
配置文件可以直接拷贝使用,注意包名的对应关系,截图上都有;
里面直接写业务代码,注意代码里面的注解不要写错或者往写