1.   静态web项目、动态web项目区别
                                         WEB-INF
                                         lib
                                         classes
                                         web.xml
          2.  外部动态web项目
                   server.xml
                   <host>
                   <Context path="" docBase="" />
                   </host>

3.  servlet快速入门!
                   1.servlet是web的三大组件之一;web的三大组件是指:Servlet、Filter、Listener
                   2.狭义的servlet:servlet
                   3.广义的servlet:凡是实现了servlet接口的类都称之为servlet!
          4.  如何快速定义一个servlet?
                   1.自定义实现类,实现servlet接口,实现接口就意味着实现servlet中的方法!
                   2.去web.xml中注册一

5.  servlet的配置
                    <!-- 向服务器注册servlet -->
                   <servlet>
                      <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
                      <servlet-name>AServlet</servlet-name>
                      <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
                      <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
                   </servlet>
                   <!-- servlet-mapping做请求映射 -->
                   <servlet-mapping>
                       <servlet-name>AServlet</servlet-name>
                       <!-- 请求映射是通过这个url-pattern来实现的! -->
                       <url-pattern>/BServlet</url-pattern>
                       </servlet-mapping>
              注意点:
                1.<url-pattern>标签中指定的映射路径不必和<servlet-name>标签指定的内容保持一致!
                2.只有你浏览器地址栏中请求的url和我们这里<url-pattern>标签中的映射一致的时候,我们自定义的servlet类才会处理这个请求!

6.  servlet生命周期

servlet是由tomcat服务器来管理的!
                 servlet生命周期:是指servlet对象由产生到销毁的过程!
                 servlet生命周期涉及的几个方法:
                        1.构造器方法:只会在第一次访问这个servlet的时候调用一次,调用一次就说明servlet是单例的,但是servlet是多线程的,非线程安全的,也就是说在servlet中我们尽量不要在service方法中操作全局变量!
                        2.init方法:init方法只会在第一次访问servlet的时候调用一次,对servlet对象进行初始化操作!
                        3.service:service方法会在每次访问这个servlet的时候都调用一次,而且我们的业务逻辑也是写在这个service方法!
                        4.destroy方法::destroy方法只会在我们的项目卸载的时候调用一次,也就是说在服务器关闭的时候会在服务器关闭的时候调用一次!

7.  ServletConfig

ServletConfig:是一个接口,一个ServletConfig对象只代表当前的servlet类的配置信息。
                        1) represent:
                            <servlet>
                                <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
                                <servlet-name>AServlet</servlet-name>
                                <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
                                <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
                            </servlet>
                         2).如何获取:
                             由服务器创建,通过init方法的参数直接传递给我们,我们直接在init方法使用就可以了!
                         3)功能:
                             getServletName():获取当前servlet-name值,也就是获取servletname
                             getInitParameter("password"):获取servlet的初始化参数!
                             getServletContext():获取当前web应用!
          8.  ServletContext

1) 代表:代表的是当前web应用,也就是指的web.xml文件中的信息!
                           2) 获取:通过ServletConfig对象的getServletContext()获取!
                           3) 功能:
                                      1)getInitParameter:获取整个web应用的初始化参数,也就是如下:
                                              <context-param>
                                                   <param-name>user</param-name>
                                                   <param-value>lisi</param-value>
                                              </context-param>
                                     2)获取资源的真实路径:getRealPath()
                                              虚拟路径:http://localhost:8080/servlet-demo1/index.html   
                                              真实路径:E:\LHF teacher\marsworkspace\servlet-demo1\WebContent\index.html

9.  MyGenericServlet
                           1.定义一个抽象类实现servlet接口,保留service方法不去实现,其余方法都实现了!
                           2.自定义抽象类子类,在web.xml文件中注册一下这个子类!

10.  HttpServlet

public class AServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request,response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {  }

}

11.  HttpServletRequest

1) 代表:代表浏览器向服务器发送的请求报文
                       2) 获取:由tomcat服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法! 
                       3) 功能:
                            getParameter()获取请求参数
                            getContextPath():获取当前项目名
                            setAttribute/getAttribute:本身就是一个域对象!
                            request.getRequestDispatcher("1.html").forward(request, response);可以实现转发功能!

12.  HttpServletResponse
                      1) 代表:服务器响应给浏览器的响应报文
                      2) 获取:由服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!
                      3) 功能:
                             response.getWriter().println("<h3>hello world!</h3>");可以返回给浏览器一个页面或者一个页面片段!
                             response.sendRedirect("/servlet1/1.html"); :可以做请求的重定向

13.  转发和重定向

转发:当浏览器向服务器发送请求的时候,服务器自己不处理,而是调用其它的web资源进行处理!

重定向:当浏览器向服务器发送请求的时候,服务器返回给浏览器一个特殊的响应,这个特殊的响应告诉浏览器再向另一个地址发送一个请求!

转发和重定向的区别:        发生在浏览器端还是服务器    浏览器的请求次数       浏览器地址栏是否发生变化          浏览器是否能够感知到

转发[request]                   发生在服务器端                            1                                      不发生变化                                     感知不到

重定向[response]             发生在浏览器端                            2                                       发生变化                                      能感知到!

14.  编码问题分析
                       通信双方在进行通信的时候,实际上是将通信的内容【信息】是按照一定的规则转化为二进制进行通讯的
                       而这个一定的规则就是字符的编码:ascii,gb2312,gbk,iso8859-1,utf-8;
                       在请求到达的时候,另一方就需要解码!
                       乱码原因:
                              通信双方的编码方式和解码方式不一致造成的,
                       解决办法:
                              统一通信双方的编码方式和解码方式,都使用utf-8编码!
                       编码分类:
                            请求编码
                                   浏览器编码---》服务器解码iso8859-1 
                            响应编码
                                   服务器编码----》浏览器解码
                            服务器端默认使用的是iso8859-1编码,而浏览器默认使用的是gb2312,当然我们也可以在页面中告诉浏览器用什么编码方式!  
            15.  请求编码
                      get请求:
                           统一浏览器和服务器端的编码格式为utf-8编码:在server.xml文件的connector标签中指定编码格式为utf-8编码:URIEncoding="utf8"  
                      post请求!
                           我们可以在post方法中在第一次获取请求参数之前通过request.setCharacterEncoding("utf-8");来设置解码格式!

16.  响应编码
                      可以通过response.setContentType("text/html;charset=utf-8");设置服务器和浏览器的编码和解码格式

17.  路径问题:

①相对路径和绝对路径:

绝对路径:绝对路径是以/开头的路径!

相对于当前服务器的绝对路径:如果是服务器解析,那么/就代表当前服务器的绝对路径:http://localhost:8080

相对于当前web应用的绝对路径:代表的是http://localhost:8080/项目名/

如果是服务器端解析,代表的是:http://localhost:8080/项目名/

如果是浏览器端解析,代表的是:http://localhost:8080

相对路径:不是以/开头的路径是相对路径,相对的是当前web资源目录的路径!

②常见的路径:

url-pattern:    转发的路径:

> 这两个的绝对路径由服务器解析,相对于项目的根目录

http://主机地址:端口号/项目名/        重定向的路径:

在实际开发中,我们使用的是绝对路径,不使用相对路径!开发中尽量不要使用硬编码的方式!

页面中的路径:

> 这两个路径有浏览器解析,相对于服务器的根目录      http://主机地址:端口号/

18.base标签

base标签里面有一个href属性,这个属性允许我们用使用相对路径的方式使用绝对路径!    我们再使用相对路径的时候,相对路径会以这个href属性值作为前缀!

170814-17关于javaweb的知识点的更多相关文章

  1. java核心技术 - 17个重要的知识点

    1.Java中没有多继承,而是用接口来代替多继承 2.运行一个已经编译的程序时,Java解释器总是从指定类的main方法中的代码开始执行,因此,执行代码中必须有一个main函数. 3.Java是典型的 ...

  2. JavaWeb核心知识点

    一:HTTP协议     一.概述 1. 概念:超文本传输协议 2. 作用:规范了客户端(浏览器)和服务器的数据交互格式 3. 特点 1. 简单快速:客户端向服务器请求服务时,仅通过键值对来传输请求方 ...

  3. Git【常见知识点速查】

    文章更新时间:2020/06/17 一.基础知识点解析 Git工作流程 以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词. Workspace:工作区 Index / Sta ...

  4. OC加强-day06

    #program mark - 08 NSMutableDictionary的使用 [掌握] "/08 NSMutableDictionary的使用/1_练习 "练习 1.小明的身 ...

  5. scrapy入门使用

    scrapy入门 创建一个scrapy项目 scrapy startporject mySpider 生产一个爬虫 scrapy genspider itcast "itcast.cn&qu ...

  6. java 项目相关 学习记录

    一位资深程序员大牛给予Java初学者的学习路线建议  [任何时期都可以好好看看] https://www.imooc.com/article/8993 https://www.jianshu.com/ ...

  7. QT学习笔记9:QTableWidget的用法总结

    最近用QT中表格用的比较多,使用的是QTableWidget这个控件,总结一下QTableWidget的一些相关函数. 1.将表格变为禁止编辑: tableWidget->setEditTrig ...

  8. Java编程兵书

    <Java编程兵书> 基本信息 作者: 桂颖 任昱衡 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121207419 上架时间:2013-8-26 出版日期:2013 ...

  9. 老男孩IT教育-每日一题汇总

    老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...

随机推荐

  1. Bean与Map的转换 和 Map与Bean的转换

    package com.JUtils.beanConvert; import java.beans.BeanInfo; import java.beans.IntrospectionException ...

  2. Spark-Core RDD中函数(变量)传递

    我们进行 Spark 进行编程的时候,初始化工作是在driver端完成的,而实际的运行程序是在executor端进行,所以就涉及到了进程间的通讯,数据是需要序列化的 1.传递函数 import org ...

  3. Enlarge GCD(素数筛)

    题意 删去最少的数,使gcd变大 题解 只要保留相同素数因子最多的数即可. 素数筛. C++代码 #include<bits/stdc++.h> using namespace std; ...

  4. dsu on tree 与长链剖分

    dsu on tree 对于树进行轻重链剖分,对于节点 $x$ ,递归所有轻儿子后消除其影响,递归重儿子,不消除其影响. 然后对于所有轻儿子的子树暴力,从而得到 $x$ 的答案. 对于要消除暴力消除即 ...

  5. 给Repeater增加button事件,并绑定值

    ASPX页面: 增加两个事件,及传值. 1<asp:Repeater ID="rptList" OnItemDataBound="rptList_ItemDataB ...

  6. 说说 HeapSort 堆排序思想,以及个人优化方案。(老物)

    听说你要排上亿个数据之 HeapSort ? 前言 : 来来来,今天我们来说说一个用来排大量数据所用的基础比较排序吧~ 注:阅读本文学习新技能的前置要求为:了解什么是二叉树及其数组性质,如果未达到要求 ...

  7. VB.NET Event RaiseEvent用处

    一.代码 Private Sub Form1_Load(ByVal sender As Object, _                       ByVal e As System.EventA ...

  8. 2019 计蒜之道 初赛 第二场 A 百度AI小课堂-矩阵问题 ( 等差数列求和公式)

    题目背景 ​91029102 年 99 月 11 日,百度在 X 市 XX 中学举办了一场 AI 知识小课堂,本场 AI 知识小课堂老师教授了一些矩阵的相关知识,因为矩阵在 AI 人工智能中也有相当的 ...

  9. Codeforces 950 010子序列拆分 数列跳棋

    A B a,b两个序列分成K段 每一段的值相等 #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset ...

  10. PHP程序员要看的书单

    想提升自己,还得多看书!多看书!多看书! 下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完.共勉吧! Github地址:https://github.com/52fhy/ph ...