javaweb 2

来源:互联网 发布:新浪nba科比数据 编辑:程序博客网 时间:2024/05/01 01:00

java web 应用程序组成

  1. WEB-INF目录的内容不能被客服端直接访问,存放一些比较隐蔽的信息;
  2. WEB-INF–classes 存放开发者书写业务类编译生成的class文件
  3. WEB-INF–lib 用于存放web应用程序中使用的jar包
  4. WEB-INF–web.xml 用于web组件的注册
  5. *.html
  6. *.jpg
  7. *.css
  8. *.js

tomcat 目录结构

  1. bin目录用于存放tomacat中的可执行文件
  2. 其中startup.bat用于启动tomacat
  3. 其中shutdown.bat用于关闭tomacat
  4. conf用于存放tomacat的配置文件
  5. 其中server.xml用于tomacat服务器的相关配置,
  6. <Host name="localhost" appBase="webapps"
    unpackWARs=”true” autoDeploy=”true”>“
  7. appBase 描述tomacat中存放web程序的目录
  8. unpackWARs 当web应用程序目录中有war文件,则自动解压;
  9. web.xml用于tomacat中web应用相关的配置
  10. lib目录用于存放tomcat运行时所使用的jar包,其中serverlet-api.jar是根据tomcat根据serverlet规范提供的实现类
  11. logs 目录用于存放日志文件
  12. temp 目录用于存放临时文件
  13. webapps 用于存放web应用程序的目录
  14. work 用于jsp支持

web服务器 web容器 web应用服务器的区别

  1. web服务器的主要作用,开启服务器,坚听端口,接受请求,产生响应,只能产生静态的html响应信息,极大影响响应信息的灵活性;
  2. web容器是辅助应用的一中解决方案.将请求信息处理完成后,动态产生响应信息;
  3. web服务器+web容器,合称web应用服务器;

servlet

  1. api结构
  2. servlet业务接口 service方法
  3. serviceConfig 配置接口
  4. genericServelet 适配器类,实现了两个接口中大部分方法,但是没有实现service方法,该方法有genericServelet的子类根据自身协议特点实现
  5. httpservlet genericServelet的子类,专门针对http协议书写的子类,重写了service方法,根据请求方式的不同,分别调用doxx();

3种方式访问

  1. <a href='ad'>adf</a>

  2. form 提交

  3. testweb/all

servlet请求路径问题

  1. 在form的action属性中,直接写servlet的URL路径,默认在当前目录下查找,一旦网页在子目录中,那么会在提交路径中加上子目录的名称,可以通../回到上一级目录
  2. 如果目录比较深,频繁用../很繁琐,而且移植性不好,可以在URL路径中,以/开始,表示webapps根目录,再加上部署名,在书写servlet请求路径

servlet url路径书写方式

  1. 精确方式 /abc 表示只能以/abc路径查找servlet
  2. 扩展映射 *.aa 表示凡以.aa结尾的请求都能访问servlet
  3. 路径映射 /abc/*表示凡是以/abc/路径下的请求都能访问servlet

servlet生命周期

  1. 启动tomcat,读取conf下的server.xml,以确定启动端口和web应用程序的部署目录
  2. 读取部署目录中所有的web应用程序中的web.xml,并解析,一旦有一个web应用程序的web.xml书写错误,那么解析失败,从而抛出解析异常;正确解析web.xml,可以确定部署的web组件信息;
  3. 加载并实例化servelet,1 标签,如果该标签的值为0或正数,表示web容器一起动就实例化,如果不写或为负数,表示第一次访问再实例化;
  4. 调用init()方法完成初始化
  5. 当请求到达后,调用service完成业务
  6. 销毁阶段,调用destroy()完成清理工作
  7. 在整个生命周期中1 2 3 4 6 都执行一次,只有5 每次请求都会执行,而且servlet对象只有一个,是单实例多线程的类;

在注册serverlet时

  1. 可以加入
    ff
    111

  2. 进行serverlet的初始化信息的描述,可以通过servletconfig配置对象中的getinitparameter()根据参数名称,得到参数值,但该初始化只能在当前servlet中使用,不能在别的servlet中使用

获取流 一次只能获取一种 不能同时使用

@override 强制检测子类是否重写父类的方法

depreated 过时

状态行 分为 HTTP协议 状态码 状态描述

  1. 状态码
  2. 100-199 表示信息代码,客户端应采取的其他动作,请求正在进行
  3. 200-299 客户端请求成功
  4. 300-399 表示用于已经移走的资源文件,指示新的地址
  5. 400-499 客服端引发的错误
  6. 500-599 服务器端引发的错误

状态码设置

  1. 在使用printwriter向客户端输出信息之前,设置状态码;

响应头设置

  1. 通过响应对象 HttpServletResponse 的 setheader() 可以设置响应头,但是响应头必须要被浏览器识别才有意义,所以通常会把响应头的设置封装成响应对象的方法 比如:setContentType() addCookie()
  2. 由于只有http协议才有响应头,所以setheader()只存在与HttpServletResponse中

HttpServletResponse向客户端输出数据

  1. getwriter()得到打印字符,可以向客服端输出数据
  2. getoutputstream()得到输出字节流,可以向客户端输出二进制数据;

重定向流程

  1. 客户端访问服务器,服务器调用response.sendredirect();产生响应时,会产生302状态码,同时产生location响应头,客户端浏览器在接收到响应信息后,发现是302状态码,然后将该内容更新浏览器地址栏,再向服务器发出第二次请求;

异常

  1. java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed;
  2. response.sendRedirect()提交之后不能再response.sendRedirect();

get方式

  1. 用户在网页中点击超链接
  2. 用户提交网页上填好的表单
  3. 用户在浏览器地址栏中输入URL地址并回车

post方式

  1. <form method = 'post' action = ''></form>

get和post的差别

  1. 流的格式的区别:get方式表单数据附加在URL后面,而post方式表单数据在消息体中,所以get没有消息体
  2. 用途的差别:get方式主要用于资源的查找。post方式主要用于数据的传输;
  3. 传输性能区别:get方式只能传输文本数据,post可以传输文本和二进制数据;get方式不能传输大数据,而post可以传输大数据;get方式表单数据附加在URL后面,所以表单数据会在浏览器地址栏中显示出来;而post表单消息的早消息体中,不会在地址栏显示,相对安全;get方式的数据会在浏览器中缓寸,而post不会缓存
0 0
原创粉丝点击