1、HTTP
1.1 HTTP简介
http若有记忆,每次请求都要包含前面请求的内容,之后的请求包会越来越大,效率低!
1.2 请求数据格式
HTTP协议中有7中不同的请求方式:
1.3 响应数据格式
状态码:
2、Tomcat
封装Http协议,服务器收到请求,会自动解析HTTP协议,不用我们琢磨了。
2.1 简介
2.2 安装 配置 部署项目
我的Tomcat位置:
C:\Users\86175\eclipse-workspace\Servers\Tomcat v10.0 Server at localhost-config
2.3 IDEA中创建Maven Web项目
项目结构:
创建方法一:使用骨架:
pom.xml:
创建方法二:不使用骨架:
4、IDEA使用Tomcat(两种)
传统使用方法,将web项目打包成war包,然后找到war包,将其放在Tomcat下的webapps目录下即可,但不方便,所以学习在IDEA中直接使用Tomcat。
这些配置都可以改(默认浏览器,默认打开的URL路径,因为这里部署的是tomcat_demo2_war这个项目,所以自动生成这个URL,在部署时可以改,一般不动):
默认端口号8080,访问路径就是对应的项目名字。
3、Servlet
3.1 快速入门
注意划横线的一行,之前在学习导入mysql的jar包时学过(maven时),说的是这个依赖包的作用范围(编译,运行,测试三种范围)provided的范围是编译和测试环境中有效,运行时无效。这里必须是provided,因为Tomcat中自带了servlet的jar包,所以对于web项目在打包时要把这个包排除掉,否则会冲突。
创建类:复写需要实现的5个函数(常用前三个),加上注解,service函数启动时会自动调用。
3.2 执行流程
3.3 生命周期
初始化:
service:
destroy:强制停止不会调用
3.4 体系结构
思考:
因为HTTP有七种请求方式,调用servlet方法时是需要获取请求时的一些参数的,请求方法不同参数位置不同,如get post,所以每次执行servlet都需要判断一下什么请求方法然后针对不同的方法进行不同的处理,十分繁琐,所以就定义了一个继承servlet的子类HttpServlet,在实现servlet函数时处理了不同的请求做了不同的处理,如get请求就使用doGet方法:
所以后续我们就可以直接继承HttpServlet类,重写doGet和doPost方法就好,在里面写处理逻辑(执行时,自动执行的是父类的servlet函数,判断什么请求后就会自动调用doGet或doPost方法)
直接在浏览器中访问demo4是get方法
使用HTML提交是post方法
浏览器先访问html文件:点提交又会访问demo4,但是是post提交方式。
总结:
3.5 urlPattern配置
注意:
扩展名匹配,不能以 / 开头;
3.6 XML配置方式编写Servlet
web.xml中配置:
4、Request Response
4.1 Request 继承体系
4.2 Request 获取请求数据
4.2.1 获取请求数据
虚拟目录是可以改动的:默认就是当前项目
ex:
输出:
获取请求体例子:
先写个html表单,post提交:
输出:
4.2.2 通用方式获取请求参数
问题:
解决方法:tomcat又给出了更方便的方法获取参数
使用这三种方法无论是get提交的还是post提交的信息都能获取到,这下doget和dopost函数内容一样了,可以直接在dopost中写一句话就行:
ex:
改一下html表单:
输出:
4.2.3 IDEA模板创建servlet
直接使用一个模板来写源码。
4.2.4 请求参数中文乱码
正确情况下,浏览器对数据进行了URL编码,其中编码方式是UTF-8,而在获取数据时,POST方式使用获取输入流的方法获取的,默认是使用ISO-8859-1的方式解码,所以乱码,那么对于POST方法直接在获取数据前设置一下输入流编码即可。
然后get方法,是直接读取字符串的方式,解码方式在Tomcat内部写死了,如上图URL解码使用的是ISO-8859-1,所以乱码,可以对解出来的乱码再次编码成字节数组,然后使用UTF-8解码就好了,这种方式也适用于post提交方式。
4.3 Request 请求转发
4.4 Response
4.5 Response 设置响应数据功能介绍
4.6 Response 完成重定向
注意这里要写上虚拟目录,这个目录在配置文件中是可以修改的,所以最好是是用一种动态的方法获取这个目录,以后该配置文件了,不用动这些功能性源代码。
路径问题:
4.7 Response 响应数据
4.7.1 响应字符数据
若响应的不是文本而是html,需要浏览器解析一下,那么要在响应头中设置一下响应的类型为html,告诉浏览器需要解析,否则会按照文本输出:content-type设为text/html;
中文乱码,该编码方式,可以与上面设置响应类型合为一体来设置:
4.7.2 响应字节数据
如一张图片。
使用一个工具来简化copy那一步:
4.8 案例...
4.9 SqlSessionFectory工具类抽取...
5、JSP
有JSP的原因!
5.1 快速入门
5.2 JSP原理
可以查看项目对应的target目录下......有对应的.class和.java文件,可以查看Java文件:
其实HttpJspBase这个类就是继承HttpServlet(可查一下)。
可以看出Tomcat自动将jsp文件转换成了我们原来写的Java文件,在servlet中用输出流write方法拼写html文件(麻烦),其实就是Tomcat把我们这个麻烦的过程又封装了,所以我们用jsp就好咯。
5.3 JSP脚本
使用一个例子来学习:
运行这个jsp,得到:
可以看jsp对应的Java文件进行理解:
可以发现还是好麻烦啊!!!!!!
所以进入到第三阶段:servlet+jsp
5.4 EL表达式
JSP还是要获取数据,遍历展现,这还是Java代码,所以进入了“ EL表达式 和 JSTL标签 ”来简化这写代码。
如:servlet处理完逻辑后将响应内容写入域对象中,转发给jsp:
jsp使用EL表达式获取:
5.5 JSTL标签
<c:if>常与EL一起使用:
<c:forEach>
其实他还有一个参数:varStatus,它的值随便写,主要用里面的index和count,像表的主键一样,页面中表的序号一列可自动从0开始(status.index)或者从1开始(status.count)。
5.6 MVC模式和三层架构
javabean 也叫 pojo 也叫 domain 也叫 entity,我记得JAVABEAN就是一个封装好规范的类
之后学的三大框架其实就是对三层架构中的每层进行的封装,Spring其实也有一些表现层和数据访问层,所以另外俩个其实就是Spring下面的一个子项目。
5.7 综合案例!!!
1、
6、会话跟踪技术
6.1 Cookie基本使用
ex:
6.2 Cookie原理
ex:
6.3 Cookie使用细节
获取时:
6.4 Session基本使用
6.5 Session原理
6.6 Session使用细节
但要注意若是客户端关闭,再次访问可就不是一个session咯。
①session-config是在web项目的配置文件中哦:
②钝化活化过程可通过看这个写了session的文件来观看,关服务器自动生成,重新打开时这个文件就消失咯:
③正常重启关闭服务器需要在idea下面的命令行:
对应项目目录下使用下面语句启动服务器:
Ctrl+c关闭
6.7 cookie vs session
6.8 登录注册案例...
7、过滤器 监听器
web三大组件哦,所以代码写在Java代码结构中,可以创建一个包。
7.1 Filter 快速入门
注意这里的注解不是filter的使用路径了,是filter要拦截的资源的路径,“/*” 表示拦截所有。
7.2 Filter 执行流程
7.3 Filter 使用细节
2点:
7.4 filter案例...
7.5 Listener
使用:
ex:服务器一启动,就开始了
8、JSON...
9、AJAX Vue Element...