web/tomcat服务器/http协议 重要知识点

    *请求:浏览器给服务器发送内容
        *响应:服务器响应浏览器
1.软件的架构
    [1]*C/S架构的软件:
       * Client / Server 客户端和服务器端的软件. 都是需要在PC端安装的软件. 比如 QQ,迅雷,暴风...
       * 优点:效果炫,一部分代码写到客户端(速度快).
       * 缺点:服务器端更新,客户端都需要更新.

    [2]B/S架构的软件:
        * Browser / Server 浏览器端和服务器端的软件. 不需要安装到PC端,只需要有一个浏览器即可. 比如 京东,网银,WEBQQ,WEB迅雷...
        * 优点:服务器端更新,客户端浏览器不需要进行更新.
        * 缺点:效果不炫,所有的代码运行都在服务器端,导致服务器压力过大.
        * 效果:使用HTML5,CSS3可以做出很炫效果.
        * 服务器端压力:搭建服务器的集群.而且还有AJAX技术.

2.WEB的资源
    *静态资源:
            * HTML,CSS,JS,图片...     【数据动态】
    *动态资源:
            * PHP           :
            * ASP           :
            * Servlet/JSP   :

3.什么是服务器
    *  硬件:其实就是一台配置很高的电脑.
    *  软件:必须在一台电脑上安装服务器软件.这台电脑称为是WEB服务器.

4.常见WEB服务器
    *Apache         :发布PHP的.LAMP:Linux Apache MySQL PHP.
    *IIS            :发布ASP的.
    *WebSphere      :IBM公司研发,收费的大型服务器软件,支持EE的所有的开发规范.
    *WebLogic       :BEA公司研发,收费的大型服务器软件,支持EE的所有的开发规范.
    *Tomcat         :Apache组织研发,免费的小型的服务器软件,支持Servlet/JSP的开发规范.
    *JBoss      :

5.Tomcat的目录结构
    *bin        :tomcat的执行的文件.    【2进制路径】
    *conf       :tomcat的配置文件.    【XML啥的配置文件】
    *lib        :tomcat运行的需要的jar包.
    *logs       :tomcat的运行的日志文件.
    *temp       :tomcat产生临时文件存放的路径.
    *webapps    :tomcat发布的web项目的路径.
    *work       :tomcat运行JSP的时候,JSP翻译成Servlet的代码存放的路径.

6.WEB动态资源目录结构
website
    |-----静态资源  HTML 、css、Js
    |-----WEB-INF   (不能直接通过浏览器进行访问)
                |-----web.xml   :必须的,当前WEB项目的核心配置,servlet
                |-----classes   :可选的,当前WEB项目所需要的第三方的jar的存放的位置
                |-----lib       :可选的,java源码编译后生成class文件存放的位置


一定要配置JAVA_HOME环境变量.

7.什么是协议
    *什么是协议:规定双方需要遵守的规则

8.什么是HTTP协议
    *http是超文本传输协议,是互联网上应用最广泛的一种网络协议,用来规定浏览器与服务器之前需要遵守的规则,
所有的www文件都必须遵守这个标准。设计http最初的目的是为了提供一种发布和接收html页面的方法。

9.HTTP协议的作用
    *规范浏览器和服务器之间的数据传递

10.HTTP协议的特点
    * 基于请求和响应的模型.   
    * 必须先有请求后有响应.
    * 请求和响应必须成对出现.
    * 默认的端口号是80.

11.HTTP提交方式及区别 【*****面试可能会问到】★★★★★
    * 提交方式有很多,常用的GET和POST
    * GET和POST的区别:
        * GET的提交的参数会显示到地址栏上,而POST不显示.
        * GET往往是有大小限制的,而POST没有大小的限制.        【建议用post】
        * GET没有请求体,而POST有请求体.(请求体中存放的都是表单提交的数据) 

12.HTTP请求头   【请求的返回值类型都是String类型】
    *都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
        ★*User-Agent        :代表浏览器的类型. --- 文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.


13.响应行常用状态码(响应码)     示例:  HTTP/1.1 200 OK     【1.1是协议版本、 200 是状态码、 OK是状态码描述】
    * 200   :成功
    * 302   :重定向(跨网站的访问一般叫做重定向)
    * 304   :查找本地缓存
    * 404   :资源不存在
    * 500   :服务器内部错误

14.响应头
    *键值对,一般一个key对应一个value,也有一个key对应多个value.
        * Content-type          :服务器设置响应正文的类型和编码
        * Last-Modified         :与请求中的If-Modified-Since一起使用查找本地缓存.
        * Content-Dispostion    :文件下载的时候使用的一个头信息.
        * Location              :重定向的跳转的路径.
        * Refresh               :定时刷新/定时跳转.

15.什么是Servlet
    * 就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议.
    * Servlet就是SUN公司提供的一个动态网页开发技术.

16.Servlet的作用
    *用来处理从客户端浏览器发送的请求,并且可以对请求作出响应

17.代码实现servlet的步骤(使用Servlet)
    [1]编写一个类实现Servlet接口
    [2]将编写的这个类配置到服务器中
        <url-pattern>

18.使用ServletRequest接收参数
    *String getParameter(String name);              ---用于接收一个名称对应一个值的数据.
    *String[] getParameterValues(String name);      ---用于接收一个名称对应多个值的数据.
    *Map getParameterMap();                         ---用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值.

===================老师课堂笔记========================

1.HTTP协议-请求协议Request
    *概念:包含了浏览器给服务器发送内容
    *HTTP组成:请求行、请求头、请求体
    *请求行组成:请求方式  请求路径  协议/版本        例如: GET http://localhost:8080/day13/ HTTP/1.1
    *请求头:格式key:value            掌握:user-Agent 浏览器内核和操作系统的信息 (文件下载)

2.HTTP协议-响应协议Response
    *概念:服务器给浏览器响应的数据
    *组成:响应行、响应头、响应体
    *响应码:是浏览器和服务器之间用于确定状态的一种标识
    *常见响应码:200-成功  302-重定向  304-缓存  **404-服务器资源不存在  **500-服务器内部错误

3.Servlet入门
    *概念:servlet applet 运行在服务器端的小程序
    *作用:获取请求数据      处理数据    返回响应结果

第二部分    代码实现  ================================================================

1.入门案例:
    1. 编写一个类实现Servlet接口,并且实现接口中所有的方法
    2. 在 /WebContent/WEB-INF/web.xml配置servlet访问路径
为用户处理请求和响应的方法.
[1]
    package com.itheima1_servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class serveltdemo1
 * 为用户处理请求和响应的方法.
 */
public class servletdemo1 implements Servlet {       //在项目先创建一个包,在包上面右击,选择new,选择Servlet即可,但是我们现在只要service,所以把他粘贴复制到第一行

    @Override
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {
        res.getWriter().print("Hello Servlet...");

    }

    @Override
    public void init(ServletConfig config) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {

        return null;
    }

    @Override
    public void destroy() {

    }
}

[2]//在项目下的文件夹的WebContent,选择web-inf,选择web-xml即可生成
    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>day13_web</display-name>
  <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>
  <servlet>
    <description></description>
    <servlet-name>servletdemo1</servlet-name>     
    <servlet-class>com.itheima1_servlet.servletdemo1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletdemo1</servlet-name>
    <url-pattern>/servletdemo1</url-pattern>
  </servlet-mapping>
</web-app>

2.
[1]
<form action="/day13_web/servletdemo2" method="post">  【一部分】    ===========/day13_web/servletdemo2  路径要一致
                    <table border="10" width="70%" align="center" bgcolor="white">
                        <tr>
                            <td>
                                用户名:
                            </td>
                            <td>
                                <input type="text" name="userName" value="" size = "15">
                            </td>
                        </tr>
                        <tr>
                            <td>
                                密码:
                            </td>
                            <td>
                                <input type="password" name="password"/> 
                            </td>
                        </tr>

[2]
package com.itheima1_servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class servletdemo2
 */
public class servletdemo2 implements Servlet {

    @Override
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");    =================  请求时写 ,一般中文时会乱码         
        res.setContentType("text/html;charset=utf-8"); ========  响应时写 ,一般中文时会乱码

        res.getWriter().print("Hello Servlet...");
        String username = req.getParameter("userName");
        String password = req.getParameter("password");
        String repassword = req.getParameter("repassword");
        String emil = req.getParameter("email");
        String name = req.getParameter("name");
        String sex = req.getParameter("sex");
        String[] hobby = req.getParameterValues("hobby");   =====  一般爱好都是多种的,用数组,后面有个Values
        String province = req.getParameter("province");
        String upload = req.getParameter("upload");
        String birthday = req.getParameter("birthday");

        System.out.println(username);
        System.out.println(password);
        System.out.println(repassword);
        System.out.println(emil);
        System.out.println(name);
        System.out.println(sex);
        System.out.println(hobby);
        System.out.println(province);
        System.out.println(upload);
        System.out.println(birthday);

        res.getWriter().print("你好");   ===========   之前响应改了格式utf-8,所以中文不会乱码
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub

    }

    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return null;
    }



    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

}

[3]    【自动生成】
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>day13_web</display-name>
  <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>
  <servlet>
    <description></description>
    <servlet-name>servletdemo1</servlet-name>
    <servlet-class>com.itheima1_servlet.servletdemo1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletdemo1</servlet-name>
    <url-pattern>/servletdemo1</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>servletdemo2</display-name>
    <servlet-name>servletdemo2</servlet-name>
    <servlet-class>com.itheima1_servlet.servletdemo2</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletdemo2</servlet-name>
    <url-pattern>/servletdemo2</url-pattern>
  </servlet-mapping>
</web-app

> 引用块内容

猜你喜欢

转载自blog.csdn.net/pf503603/article/details/81775837