Java Web----学习笔记(1)
软件架构:
1. C/S client / server 客户端/服务器端 (安卓)
2.B/S Browser / server 浏览器/服务器端 (javaweb)
静态资源:所有用户访问的结果都一样(html,css,js)可以被浏览器直接解析
动态资源:每个用户访问的结果可能不一样(servlet,jsp,php...)动态资源被访问后需要先转换为静态资源,再返回给浏览器(响应)
通信的三要素:
1.IP
2.端口
3.传输协议
++
服务器:安装了服务器软件的计算机
服务器软件:接受用户的请求,处理请求,做出响应
jiavaEE:java语言在企业级开发中使用的技术规范总和
javaSE:
常见的java web服务器软件:
Tomcat,webLogic,webSphere,JBOSS
tomcat中目录文件结构:
bin:二进制,可执行文件
conf:config 配置文件
lib:依赖jar包
logs:日志文件
temp :临时文件
webapps:存放web项目
work:存放运行时的数据
tomcat的启动:
bin/startup.bat
访问自己:http://localhost:8080
访问别人:http://别人IP:8080
启动错误:
1.黑窗一闪而过
2.报错
tomcat关闭:
1.正常关闭:bin/shutdown.bat或者在启动窗口按ctrl+c
2.点x
部署tomcat的方式:
1.直接将项目放入tomcat安装目录的webapps下http://localhost:8080/...
2.配置conf/server.xml文件
在<Host>标签中配置<Context docBase="D:\hello" path="/hehe"/> 在网址中加入/hehe,
3.在conf/catalina/localhos创建任意名称的xml文件,在文件中编写<Context docBase="D:\hello" /> 虚拟目录:xml的文件名
servlet:
概念:server+applet 运行在服务器端的小程序
servlet就是一个接口,定义了java类被浏览器访问到(tomcat识别)的规则
我们自定义一个类,实现servlet接口,复写方法。
快速入门:
1.创建一个javaEE项目
2.定义一个类,实现servlet接口
3.实现接口中的抽象方法
4.配置servlet
servlet执行原理:
1.当服务器接收到客户端浏览器的请求时,会解析请求URL路径,获取访问的servlet的资源路径
2.查找xml文件,是否有对应的<url-pattern>标签体内容
3.如果有,则找到对应的<servlet-class>全类名
4.tomcat会将字节码文件加载进内存,并创建其对象
5.调用其方法
servlet生命周期:
servlet对象从创建到销毁的过程
servlet生命周期相关的方法:init,service,destroy
servlet是在第一次被访问的时候被实例化的。只要servlet一被实例化,那么servlet中的init方法就会执行(只会执行一次)。
任何一次从客户端发来的请求,那么servlet中的service方法就会执行(在service方法内部根据请求的方式不同调用不同的doXXX方法)。
当servlet从服务器中移除或关闭服务器的时候,servlet对象被销毁,destroy方法执行,然后垃圾回收将其回收。
servlet启动时加载:
在服务器启动的时候实例化,把用户花费的时间转移到启动服务器时花费
《url-pattern》配置
1.完全路径匹配
以/开始,如/servletdemo1
2.目录匹配
以/开始,以*结束,比如:/* /aaa/*
3.扩展名匹配
以*开始 比如:*.action *.do
servletconfig对象:
用来获得servlet的相关配置的对象
使用getservletconfig这个方法获得servletconfig对象
获得servlet的初始化参数
获得servletcontext对象
获得servlet的名称
servletcontext对象:
servlet的上下文对象,一个web项目只有一个,在服务器启动的时候为每个web项目创建一个单独的servletcontext对象
servletcontext对象的作用:
1.获取web项目的信息
2.读取web项目下的文件
之前用IO流,
Response对象:
response关于响应行的方法:setStatus
设置响应的状态码:200成功;302重定向;304查找本地缓存;404请求资源不存在;500服务器内部错误
response关于响应头的方法:
set...
response关于响应体的方法:
getoutputstream()字节流
getwriter()字符流