第三天知识点

知识点回顾:

1.tomcat安装及目录介绍

JAVA_HOME

CATALINA_HOME

PATH=%JAVA_HOME%/bin;

2.静态web项目、动态web项目

WEB-INF

lib

classes

web.xml

3.外部动态web项目

server.xml

<host>

<Context path="" docBase="" />

</host>

4.tomcat和eclipse的整合!tomcat镜像!

5.http协议介绍及get与post请求、响应状态码

报文首部

报文首行

报文头部

空行

报文体

请求报文

get请求

post请求

get请求和post请求的区别:

1、get请求是通过url地址栏来传递参数的,而post请求通过报文体来传递参数的

2.get请求可以在浏览器地址栏中看到请求参数,而post请求看不到

3.get请求对传递的参数有限制,最多允许255个字符,所以数据比较大的话我们使用post请求!

4.在表单中一般我们都使用post请求,除了在表单中,页面中的其它地方基本上都是使用get请求!

响应报文

6.servlet快速入门!

1.servlet是web的三大组件之一;web的三大组件是指:Servlet、Filter、Listener

2.狭义的servlet:servlet

3.广义的servlet:凡是实现了servlet接口的类都称之为servlet!

7.如何快速定义一个servlet?

1.自定义实现类,实现servlet接口,实现接口就意味着实现servlet中的方法!

2.去web.xml中注册一下!

问题点:

1.创建动态web项目的时候没有选择tomcat

2.复制类的全路径的时候!

3.项目名书写:不要8.x

今日知识点:

4.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类才会处理这个请求!

5.生命周期

servlet是由tomcat服务器来管理的!

servlet生命周期:是指servlet对象由产生到销毁的过程!

servlet生命周期涉及的几个方法:

1.构造器方法:只会在第一次访问这个servlet的时候调用一次,调用一次就说明servlet是单例的,但是servlet是多线程的,

非线程安全的,也就是说在servlet中我们尽量不要在service方法中操作全局变量!

2.init方法:init方法只会在第一次访问servlet的时候调用一次,对servlet对象进行初始化操作!

3.service:service方法会在每次访问这个servlet的时候都调用一次,而且我们的业务逻辑也是写在这个service方法!

4.destroy方法::destroy方法只会在我们的项目卸载的时候调用一次,也就是说在服务器关闭的时候会在服务器关闭的时候调用一次!

6.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应用!

7.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

8.MyGenericServlet

1.定义一个抽象类实现servlet接口,保留service方法不去实现,其余方法都实现了!

2.自定义抽象类子类,在web.xml文件中注册一下这个子类!

9.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 {

}

}

10.HttpServletRequest

1)代表:代表浏览器向服务器发送的请求报文

2) 获取:由tomcat服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!

3) 功能:

getParameter()获取请求参数

getContextPath():获取当前项目名

setAttribute/getAttribute:本身就是一个域对象!

request.getRequestDispatcher("1.html").forward(request, response);可以实现转发功能!

11.HttpServletResponse

1)代表:服务器响应给浏览器的响应报文

2)获取:由服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!

3)功能:

response.getWriter().println("<h3>hello world!</h3>");可以返回给浏览器一个页面或者一个页面片段!

response.sendRedirect("/servlet1/1.html"); :可以做请求的重定向

12.转发和重定向

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

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

转发和重定向的区别:

发生在浏览器端还是服务器      浏览器的请求次数            浏览器地址栏是否发生变化               浏览器是否能够感知到

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

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

13.登录练习和注册练习

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.响应编码

17.路径问题:

①相对路径和绝对路径

绝对路径

相对路径

②常见的路径:

url-pattern:

转发的路径:

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

http://主机地址:端口号/项目名/

重定向的路径:

页面中的路径:

> 这两个路径有浏览器解析,相对于服务器的根目录

http://主机地址:端口号/

18.base标签

时间: 2024-08-26 13:46:22

第三天知识点的相关文章

《javascript高级程序设计》第二、三章知识点整理

第二章知识点总结 1.<script>在html中的使用 主要功能:在页面中嵌入javascript代码或包含外部javascript文件. 常用属性: type:用于定义脚步代码的语言类型,默认为text/javascript. src:包含外部域的javascript文件. defer:表示脚本会在整个页面加载完毕之后运行,只对外部文件有效,最好只包含一个延迟脚本. async:脚本在不妨碍其他操作的情况下立即下载(不保证下载文件的顺序). 插入位置:在页面<body>标签页面

第三个知识点 影响计算能力和存储能力的因素

第三个知识点 影响计算能力和存储能力的因素 原文地址:http://bristolcrypto.blogspot.com/2014/10/52-things-q3-computational-and-storage.html 这个是密码学52件事的第三个知识点,这些问题被总结成密码学博士在第一年必须要知道的事情.我们将在接下里的一年里每周讨论一个问题.我是被安排的第三个问题的学生. 问题:估计下面器件的相对的计算和存储能力 一个智能卡(一卡通??) 一个单片机(例如一个传感器节点) 一个嵌入式的

3月9日 作业 第三章知识点

一问信息系统集成有哪些特点?答:(1)信息系统集成要以满足用户需求为根本出发点    (2)信息系统集成不只是设备选择和供应,更重要的,它是具有高技术含量的工程 过程,要面向用户需求提供全面解决方案:其核心是软件    (3)系统集成最终交付物是一个完整的系统而不是一个分立的产品.    (4)系统集成包括技术,管理和商务等各项工作,是一项综合性的系统工程.技术 是系统集成工作的核心,管理和商务活动是系统集成项目成功实施的保障. 二问信息系统生命周期中的开发阶段包含哪些阶段?答:生命周期包含4个

3月9日 作业信息系统第三章知识点

一问信息系统集成有哪些特点?答:(1)信息系统集成要以满足用户需求为根本出发点    (2)信息系统集成不只是设备选择和供应,更重要的,它是具有高技术含量的工程 过程,要面向用户需求提供全面解决方案:其核心是软件    (3)系统集成最终交付物是一个完整的系统而不是一个分立的产品.    (4)系统集成包括技术,管理和商务等各项工作,是一项综合性的系统工程.技术 是系统集成工作的核心,管理和商务活动是系统集成项目成功实施的保障. 二问信息系统生命周期中的开发阶段包含哪些阶段?答:生命周期包含4个

Python算法教程第三章知识点:求和式、递归式、侏儒排序法和并归排序法

本文目录:一.求和式:二.递归式:三.侏儒排序法和并归排序法微信公众号:geekkr</br></br></br> 一.求和式 # 假设有一函数为f(),则在Python中经常使用的求和方法如下. sum(f(i) for i in range(m, n+1)) + sum(g(i) for i in range(m, n+1)) sum(f(i)+g(i) for i in range(m, n+1)) </br>二.递归式 # 举个栗子 def S(se

SQL前三章知识点测试

一.请写出数据库分离和附加的步骤 1.分离 (1)鼠标右键选择要分离的数据库  → 选择任务   →  选择分离 (2)点击分离,勾选(删除链接,更新统...)     点击确定,分离成功 2.附加 (1)点击数据库  →  选择附加 (2)点击添加 →   选择你的分离数据库保存路径 →  点击确定添加成功 二.请写出数据库导出SQL脚本的步骤 1.数据库→  任务→  生成脚本→  下一步→  高级(选择架构和数据)→  选择路径为桌面→  单击下一步→  到处脚本成功 三.请写出SQL S

Nginx初次学习三个知识点记录

1.Nginx是用来解决负载均衡问题的,它可以将请求均衡的发放到集群的每一个节点,但是使用者又拥有极大的控制权,通俗来讲就是你既可以让请求均衡发放,也可以指定哪些服务器接收更多的请求.更多的时候是用在集群服务器性能高低不一,希望性能高的服务器接收更多的请求. 2.当我们真正使用到Nginx时,就一定会涉及到集群分布式.而老生常谈的一个问题就是分布式情况下如何解决Session共享问题?我们不可能将其存在集群中的一台服务器上,其他服务器就会出现Session丢失的问题.同时还要保证Session的

第三章知识点总结

第3章总结 1.Activity 界面 四大组件: Activity service content provider broadcast reciver 界面 = Activity(java代码) + 布局(xml文件) 编写Android程序最主要的几部分: src目录的java代码 layout布局 清单文件androidManifest2.activity生命周期 onCreate onDestroy onStart onStop onReStart onResume onPause3.

第三章知识点归纳

1.对象初始化器 在调用构造函数时直接初始化对象. public class Student { public string Name; public int Age; public bool Gender; } Student stu=new Student{Name="zhangsan",Age=10,Gender=false}; 等同于: Student stu=new Student(); stu.Name="zhangsan"; stu.Age=10; s