servlet打war包

一、打war包: 类似于 jar war zip rip

war(可以将开发好的web应用的所有文件和目录达成一个war包)、
1.对于传输而言,可以将web应用的所有文件和目录打成一个war包
便于传输
2.打成war包后,文件的总体积也会有所减少
!!3.把war包 发到服务器的时候,服务器可以识别,自动解压
进入项目–全选(文件名需要保证是英文的) --选择压缩文件(这个包名在webapps中不能存在)–先打成一个zip包
–压缩之后把后期的后缀改成war(要把里面的文件进行选中要进行识别里面的文件夹)

二、Http协议:

 客户端(浏览器)发出请求 →→→→ 服务器接受
 服务器接受请求 →→→→ 响应回复客户端(浏览器) 

http协议 规定了浏览器客户端和服务器通信的方式(规则
1.一次请求 只能对应 一次响应 (必须对应!一次对应一次。)
2.请求由客户端(浏览器)发起,服务器只能被动的等待请求,并作出回应
http协议 主要规定了浏览器 该怎么样给服务器发送请求信息;
(也就是规定了请求信息的格式);
(也规定了,服务器给浏览器作响应的格式)
http请求:
1.请求行:
GET /news/hello.html HTTP/1.1
GET:请求方式一共有7种,其中5种都不常用,常用给的是GET、POST
/news/hello.html:请求资源路径,表示浏览器请求的是news下得hello.html 这个网页文件
HTTP/1.1:请求信息所遵守的协议和版本
HTTPS 一个新的版本 比较安全可以加密
2.若干请求头 (遵循一个格式: key:value)
eg: Host:localhost–表示浏览器请求的主机是localhost
XXX:XXX
3.请求实体内容:
如果请求方式是GET提交,请求实体内容是空的!
如果请求方式是POST提交,并且请求中携带了数据,请求实体才会有内容

   ******GET提交方式和POST提交方式的区别*****
      只有使用表单,并且在表单时写了(method="post"),才是对POSt提交
   其他方式都是GET提交(AJAX)除外
      默认也是 GET (不加Post)的话
  GET提交的特点:
    1.Get提交的参数会显示在浏览器的地址栏中,这样非常不安全
    2.通过地址栏提交参数,数据量不能太大,不能超过1KB或者4KB

  POST提交的特点:
    1.不会出现在地址栏中,而是通过请求实体内容发送给服务器相对安全
    2.通过请求实体内容发送数据给服务器,理论上没有数据量的限制(但是服务器会设置大小)

http响应:
1.状态行:
HTTP/1.1 200 OK
HTTP/1.1:响应信息所遵循的协议和版本
状态码:
200 :表示服务器对请求处理的结果成功
304 :表示通知浏览器使用缓存信息 --缓存Cache–(使用之前我使用过得网页)
404 :请求一个不存在路径,就是路径写错了
500 :表示服务器端程序在处理请求的过程中抛出了异常
2.若干响应头:

   Content-Type:表示:浏览器服务器响应的数据类型--解决乱码
        text/html--表示服务器响应的是一个html格式的网页
        image/* --表示服务器响应的是一个图片
   Refresh:和定时刷新相关的头,
    Refresh:5;url=http://localhost/news/index.html
   Set-Cookie:和cookie技术相关的一个头
   ... 
  3.响应实体内容
    就是服务器所响应的文件的内容
    如果浏览器请求的是服务器的一个hello.html文件,服务器最终会将这个文件的内容,通过
   响应实体内容发送到浏览器

web.xml:

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 

**
通过Eclipse发布的web项目在哪个位置?
–双击 servers 出现的tmocat配置 有一个默认的工作空间 或者点击项目名 ShowIn
##修改 发布web项目的位置 --发布到 tomcat 的webapps里面

Eclipse 是怎样将一个web项目发布到服务器中的?

request 和 response 介绍:
request 是代表HTTP请求信息的对象
response 是代表HTTP响应信息的对象
在服务器接受请求后,调用service方法处理请求之前,会创建出代表请求的request对象
和代表响应的response对象
request请求对象中封装了浏览器发来的请求信息,如果传递给了service方法,在service方法处理请求
的过程中,我们就可以通过request获取请求的相关信息。
将来要发送给浏览器的响应信息,可以先保存到response对象中,当service方法执行完后,最后由服务器从response对象
中获取响应信息,按照HTTP协议发送到浏览器。

request:
|获取请求参数 : resquest.getParameter(String paramName);
– 可以根据请求参数的名称获取对应的value值
request。getParameterValues(String paramName);
– 根据请求参数的名称获取对应的所有的value值组成的数组
|请求转发: 传过去 两个对象:request 和 response .forward(request, response);
–属于服务器内部同一个web应用中的资源跳转,当服务器发送请求访问服务器中的某一个servlet程序
,servlet最后没有做响应,而是将请求转发给了另外一个jsp来响应,将请求从servlet中转发给JSp就是
资源跳转。
–请求转发是一次请求一个响应
–请求转发前后(从访问servlet到最后jsp作响应)地址栏地址没有发生变化
() jsp: request.getAttribute(); — 与上面的 传过来的两个对象是一个
|域对象:
如果一个对象具备可以被访问的范围,在这个范围内利用该对象的map集合,可以实现资源共享
request提供的存取数据的方法:–存取一个重复的名字 就覆盖
request.setAttribute(Sting attrName)
–通过属性名获取对应的属性值
request.removeAttribute(Sting attrName)
–通过属性名删除对应的属性值
请求转发+域对象实现带数据到jsp进行显示:
request 域对象的三大特征:
(1)生命周期:在一次请求开始时,创建request对象,再一次请求结束后,已经发回浏览器了,销毁request
(请求转发 和 请求重定向 一个是一次请求 一个是两次)
(2)作用范围:一次请求中(整个请求链)
(3)主要功能:带数据到目的地
重定向和转发都属于资源的跳转方式,
–转发只能是一个web应用下的资源进行转发,(A转发到B,A和B必须是同一个web应用)
–重定向没有转发的限制,既可以在同一个web应用内部的资源之间进行跳转,也可以在不同
web应用或者不同的虚拟主机之间跳转
| response.sendRedircet(“重定向到资源的路径”);
重定向特点
1.是两次请求,两次响应
2.重定向前后地址栏地址会发生变化
3.重定向既可以在同一个web中跳转也可以在不同的web应用中
4.过程中不能通过 request域带数据到目的地
–数据没法传递
定时刷新:通过 Refresh响应头 可以在实现在多少秒后跳转到一个web网
定时刷新的特点:
1.是两次请求,两次响应
2.重定向前后地址栏地址会发生变化
3.重定向既可以在同一个web中跳转也可以在不同的web应用中
4.过程中不能通过 request域带数据到目的地
–数据没法传递
jsp:
动态web页面:在不同的访问条件下,可以显示不同的内容(购物车页面,订单页面)\jsp\servlet\PHP.net
静态web页面:在任何条件下,任何人去访问看到的效果是相同的,叫做静态web资源 html、纯射手、JS、Flash
jsp本质上就是一个servlet。
|-servlet适合处理逻辑,适合书写java逻辑处理请求,但是不合适输出一个html
|-html可以用来开发网页,可以向浏览器输出一个完整的页面,html不能书写java程序无法展示动态的数据
|-jsp本质上也是一个页面的开发技术,适合用来输出并且其中可以通过java代码获取动态的数据
|-jsp解决了servlet的不适合输出网页的问题,也解决了HTML无法书写动态数据的问题
jsp:执行过程:
当浏览器访问像HTML、CSS、JS 图片等静态资源的时候,服务器会根据请求,找到对应的资源文件,然后将文件的内容
通过响应实体(转换成流),发送给浏览器,让浏览器去解析
当浏览器访问服务器的一个jsp文件时,并不会直接将jsp中所有内容原封不动的发送给浏览器,因为jsp中可以书写java代码
并且还有一些jsp特有的内容,这些内容浏览器是无法解析并且执行的
jsp在第一次被访问的时候,就会被翻译成一个servlet程序,servlet程序执行之后,会向浏览器输出一个html网页
jsp翻译为java文件,文件会再翻译成一个class文件

jsp指令:是用来指挥jsp解析引擎 ,解析jsp,翻译jsp,如何翻译当前的jsp文件到一个servlet
page指令:声明一些基本的属性信息,比如像jsp使用的编码,jsp开发文件,
<%@page language=“java”%> --通知jsp解析引擎当前的jsp开发语言是java
<%@page import=“java.util.Date”%> --导入包
<%@page pageEncoding=“UTF-8”%> --jsp的编码。
taglib指令:在引入JSTL标签库或者其他的自定义标签库 需要taglib指令先引入标签库

EL表达式:

格式: 表达式主要作用:从四大域中获取指定名称的属性值,然后输出四大作用域: p a g e C o n t e x t < r e q u e s t < s e s s i o n < a p p l i c a t i o n ( S e r v l e t C o n t e x t ) 如果在 E L 中书写一个变量,比如 {表达式} 主要作用:从四大域中获取指定名称的属性值,然后输出 四大作用域: pageContext < request < session < application(ServletContext) 如果在EL中书写一个变量,比如 表达式主要作用:从四大域中获取指定名称的属性值,然后输出四大作用域:pageContext<request<session<application(ServletContext)如果在EL中书写一个变量,比如{addr},EL层会到 四个作用域中依次寻找属性名为addr的属性值,将值直接返回输出
在寻找时,按照作用的大小,从小到大的顺序 依次寻找名称为addr的找到既可以输出
找不到就不输出~
应用场景:将来我们开业在servlet中或者Controller中将数据存入作用域,转发带到JSP,Jsp中通过EL获取作用域
中的数据(比如查询所有的门店,查询所有的订单)

<h3>(1)获取域中的变量的值</h3>
 <%
    //声明变量  并将变量存入到域中
    String name ="刘德华";
    request.setAttribute("name1", name); //吧刘德华已name1存在request中
%>
<!-- //存到域中,还需要去取值!-->  
 ${  name1  }
 <h3>(2)获取域中的数组或集合中的元素</h3>
 <%   
     //声明一个数组,并把他们存到域中
     String[] names = {"刘德华","郭富城","黎明","张学友"};
     request.setAttribute("names", names);
  %>
  ${ names[0] }
  <%--  EL只能获取数据,不能遍历数据 
    EL+JSLT(C:forEach) 可以遍历
   --%>
 <h3>(3)获取域中的map集合中的元素</h3>
     <%-- 导包 --放在单词后面 alt+/
   --%>
  <%   
     //声明一个map集合,并把他们存到域中
     Map map = new HashMap();
     map.put("name","wjh");
     map.put("age","22");
     map.put("addr","西安");
  
     request.setAttribute("map1", map);
  %>
  ${ map1.name } <!-- El负责把集合调出来,访问value用map.key -->

JSTL::

JSTL 标签库是为了 JavaWeb开发人员提供了一套标准通用的标签库;
JSTL标签库和EL配合使用取代了JSP中大部分的java代码;
JSTL标签库的开发步骤:
(1):导入JSTL标签库的jar 包; //Jar包和驱动包放入WebContent的 Web—INF中的lib文件夹下面
|-导入后会自动 build path
(2):在使用JSTL的标签库的JSP页面,通过taglib指令引入标签库;

常用的标签:
|1.<c:set></c:set> --往四大作用域中添加域属性,或者修改四大作用域中已有的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值