传送门
SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口
一、前言
1.JavaEE也不是凭空冒出来的,它实际上是完全基于JavaSE,只是多了一大堆服务器相关的库以及API接口。所有的JavaEE程序,仍然是运行在标准的JavaSE的虚拟机上的。
2.JavaEE最核心的组件就是基于Servlet标准的Web服务器,开发者编写的应用程序是基于Servlet API并运行在Web服务器内部的
3.EJB:Enterprise JavaBean,企业级JavaBean,早期经常用于实现应用程序的业务逻辑,现在基本被轻量级框架如Spring所取代;
下面参考尚硅谷内容整理而来:
二、Tomcat
1、发布一个网站
2、开端(两种访问)
两种访问原理不一样
默认访问
3、目录
4、启动
启动失败主要原因是JAVA_HOME没配置好
idea启动tomcat
命令启动,这种方式可以看出错误提示
5、停止
6、修改端口号
7、部署
方法一
比如 直接放一个工程book到webapps下面,访问地址就是ip+端口+/book/book项目中任何路径文件(文件在哪个文件夹下面,直接写文件夹路径就可以了)
方法二
修改配置文件(不用像方法一约束,只能在webapps下面,也不用访问路径必须是项目名book,可以自定义)
单独的conf目录下面的localhost文件夹下面增加一个xml文件,path就是访问路径,docBase就是本地项目放哪里去了。访问地址和方法一一样,直接放文件路径就可以了。
方法三(常见)
修改配置文件(不用在localhost下面增加xml,现成的修改,比较常见)(都是只能一对一,换了项目就得改这个配置)
conf目录下面的servser.xml中增加方法二截图的内容,path等意义同方法二
8、动态web项目目录结构
三、GET和POST
1、GET请求
2、POST请求
3、哪些是get哪些是post
4、/斜杠的意义
5、响应两种流
其实void返回值的时候,能多次用字符流
响应的乱码问题解决。 服务器的设置为utf-8,浏览器的也要设置content-type为utf-8(浏览器默认国标)
乱码解决优化代码,一句话两端全部设置
6、参数封装高效写法
四、重定向与转发
resp.sendRedirect(“/hello”);// 重定向
req.getRequestDispatcher(“/hello”).forward(req, resp);// 转发
Redirect
重定向是指当浏览器请求一个URL时,服务器返回一个重定向指令,告诉浏览器地址已经变了(浏览器会收到一个302,和去目的地址Location),麻烦使用新的URL再重新发送新请求,并且更新浏览器的url地址为最新的。(两次请求,两次响应)
Forward
Forward是指内部转发。当一个Servlet处理请求的时候,它可以决定自己不继续处理,而是转发给另一个Servlet处理。(一次请求,一次响应)
五、Cookie和Session
1、前导
cookies与session:
cookies:
浏览器设置启动cookies,是属于浏览器端的技术,原理是把共享信息储存在浏览器中。Cookie由服务器生成,发送给浏览器,浏览器将Cookie的key/value保存到某个文本文件内,下次请求同一网站时就发送该Cookie给服务器。常见应用为保存密码下次免密登录和购物车在付款时最后提取信息。cookies在关闭浏览器后消失(默认设置,此cookies也称之为会话cookies,而且信息是存在内存中的,关闭浏览器就物理不见了。一般浏览器设置了过期时间,那么cookies就是存在硬盘中的,关闭电脑数据都还是在的)。cookies的value只能是简单字符串不能是对象。限制在4kb之内。一台服务器最多在客户端保存20个cookies,一个浏览器最多保存300个cookies。
原始请求没有使用cookie的请求(比如第一次请求),例如name=zt的登录请求,请求头是没有cookie的信息字样的,第一次请求之后服务器会生成name=zt的cookie给浏览器。第二次cookie请求,请求头就会有cookie:name=zt的字样出现。
session:
浏览网站的时候Session开始,关闭浏览器Session结束。session也是通过cookie实现。session由服务器创建,将所有数据放到Session中,一个用户独占一个session ,发送一个key(钥匙,就是cookie方式发送,而且不是全部session内容,只是一个JESSIONID)给客户端,客户端请求拿钥匙来找到自己保存在服务器中的数据 这个钥匙就一个Cookie,名称为jsessionid。上面讲了cookie的原始请求和第二次以后请求,session的请求每次请求头就会有cookie:name=zt,JSESSIONID=xxxxxxx的字样出现。
浏览器A第一次访问Servlet1,服务器会创建一个session,每个session都有一个id号,创建好了后,服务器将id号以cookie的形式回送给客户机(这些是服务器自动完成的)。当浏览器未关闭前再次发请求访问Servlet2时,就会带着这个id号去访问服务器,这时候服务器检索下内存中有没有与之对应的session,有就用这个session为其服务。session是服务器自动完成的。
用户第一次request.getSession时创建。session对象默认在30分钟没有使用,则服务器会自动销毁session。但是用户可以在web.xml文件中手动配置session的失效时间, 用户也可以手动调用session.invalidate方法,摧毁session。
session和cookie的主要区别在于:cookie是把用户的数据写给用户的浏览器(保存在客户机);session技术把用户的数据写到用户独占的session中(保存在服务器)。
jsp就是一个servlet
MVC设计模式:Model(模型)-View(视图)-Controller(控制器)
硬性规定模板必须放在webapp/WEB-INF/templates目录下,静态文件必须放在webapp/static目录下
2、cookies
2.1、cookies创建
原理 注意没有就创建,有就更新,是基于key1更新value1的,不是更新整个cookie
2.2、cookies获取
2.3、cookie修改
2.4、cookie生命周期
(注意,默认都是session级别的周期,关闭浏览器后就会消失,而如果设置了时间,关闭浏览器后还在,只有时间到期了,才会消失。)(时间是格林时间)
通过设置时间来删除cookie
2.5、cookie路径设置
默认是当前的工程路径
2.6、用户登录
3、session
3.1、session会话
3.2、session创建和获取
3.3、session域数据的存储
取
存
3.4、session的生命周期
(注意:超时是指两次请求的最大间隔时长,如果一直点一直点,超时时间一直会被刷新从而一直没有超时)(负数表示永不超时,极少使用,不然服务器维护session成本太高。)
默认时长1800秒=30分钟
删除
3.5、浏览器和session底层内幕
(session的底层是基于cookie实现的)
六、表单重复提交和验证码防重复
1、概念
2、谷歌验证码
七、JSON
1、概念
2、JSON在JavaScript中的使用(客户端)
2.1、定义
2.2、访问
2.3、两个常用方法
上面定义的var jsonObj 本身是一个json对象 (传参用json字符串,取值存值用json对象)
3、JSON在Java中的使用(服务器Gson)
3.1、JSON和JavaBean的相互转化
3.2、JSON和List的互转
还得自己写个PersonListType ,或这种方案不好用(下面map有优化方案,用匿名内部类)
3.3、JSON和Map的互转
也得用继承TypeToken这种,不爽(后面有优化方案)
八、Ajax
1、概念
2、原生Ajax请求
只发请求不管返回
处理返回
3、JQuery中的Ajax请求
3.1、$.ajax方法
dataType返回的选择,json更方便
3.2、 . g e t 方法和 .get方法和 .get方法和.post方法
3.3、$.getJSON方法(只是get请求没有post)
3.4、表单序列化serialize
九、i18n国际化
1、概念
2、三要素
2.1、locale
2.2、properties
2.3、ResourceBundle
CHINA的locale,并且项目准备了properties配置文件,basename是i18n,这样就能得到resoureceBundel对象,并通过getString取配置文件里面的值
3、页面的使用
简单用法
切换的优化
jstl标签继续优化 fmt标签
感觉还是比较麻烦,所以大部分公司还是写了两套代码