黑马程序员技术交流社区

标题: 【石家庄校区】JavaWeb第三波 [打印本页]

作者: 石家庄付天恩    时间: 2018-2-4 15:24
标题: 【石家庄校区】JavaWeb第三波
本帖最后由 小石姐姐 于 2018-2-8 15:11 编辑

JavaWeb第三波

Tomcat
技术分析
c/s架构的软件
client/Sever客户端和服务器端软件.
优点:客户体验好,一部分代码在客户端,速度快
缺点:需要更新

B/s架构软件
Browser/Server浏览器端和服务器端的软件. 只需要一个浏览器即可
优点:服务器更新,客户端浏览器不需要更新
缺点:效果不好,服务器压力大
效果:使用HTML5,可以做出好的选过
服务器端压力:搭建服务器的集群,而且还有AJAX技术


WEB的资源
静态资源
HTML,CSS,JS 图片
动态资源
PHP:
ASP:
SErvlet/JSP:

服务器:一台配置很高的电话
软件:必须在一台电脑上安装服务器软件

WEB动态目录资源结构



发布一个WEB项目到Tomcat中
发布一个WEB工程到Tomcat中共有三种方式:
1,直接将工程copy到tomcat/webapps下
2.配置tomcat中

Tomcat常见问题
1,没有配置JAVA_HOME环境变量

端口号冲突问题
结束端口应用

修改自身应用端口
conf/server里该 Connector  port 端口


HTTP的协议
规范浏览器和服务器之间的数据传递
特点:
基于请求和响应的模型
必须先有请求后有响应
请求和响应必须成对出现
默认端口80
HTTP协议的详解
提交方式:get:参数会显示到地址栏,有大小限制.GET没有请求体,post;相反  超链接只有GET
提交路径:固定
协议版本:固定
请求头:
都是键值对的形式显示的.一个key对应一个value,也有一个key对应多个value
User-Agent  浏览器类型
Referer:
If-Moidfied-Since:

响应行:协议版本 状态码  状态码描述

响应头:键值对,一般一个key对应一个value 也有一个key对应多个value
Last-Modified  :与请求中的If - Moidfied-Since一起使用查找本地缓存
Content-Dispostion  文件下载的时候使用的一个头信息
Location: 重定向的跳转路径
Refresh  定时刷新



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

使用Servlet
第一步,创建一个类去实现Servlet的接口
第二部:为了找到这个servlet,必须给这个servlet设置一个虚拟路径


使用ServletRequest接收参数】
C:/Users/Administrator/AppData/Local/YNote/data/weixinobU7VjmWQYniWIMLxajLby2efwEg/c60884739b9c449f9eed1d1a7d76d9fd/wpsaa8b.tmp.jpeg

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


编写一个类继承HttpServlet,重写doGet,dopost


总结
Servlet的生命周期
生命周期就是一对象从创建到销毁的过程
Servlet生命周期,;Servlet从创建到销毁的过程
何时创建  客户第一次访问Servlet,是单例模式
何时销毁 当项目从服务器中移除的时候,或者关闭服务器的时候
怎么说: 用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet重init方法就会执行, 任何一次请求服务器都会创建一个新的线程访问Servlet中的servic的方法.在service的内部根据请求方式的不同调用doxxx的方法.(get请求调用doGet,post请求调用dopost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destory方法就会执行.


Servlet的相关配置
启动时创建Servlet
Servlet默认是在第一次访问的时候创建的,现在让Servlet在服务器启动的时候创建好,进行Servlet的配置:
在web.xml中在<servlet></servlet>标签中配置
C:/Users/Administrator/AppData/Local/YNote/data/weixinobU7VjmWQYniWIMLxajLby2efwEg/317cb8f2d5b842ccb61388d32c59d9ab/aff600a1d7c84957a7b2c5443c96ee67.jpg
<load-on-startup>2<load-on-startup>--传入正整数,整数越小,被创建的优先级就越高.

url-pattern的配置
url-pattern 配置方式共有三种
1.完全路径匹配  以/开始 /aaa/bbb
2.目录匹配        以/开始,需要以*结束  /*    /aaa/*
3.扩展名匹配        不能以/开始, 以*开始的
完全路径匹配>目录匹配>扩展名匹配

开发中的路径的编写
相对路径:都是需要找位置相对关系,不能以/开始  ../到达上一级目录
绝对路径:不需要找位置相对关系 .以/开始的
   绝对路径中分为客户端路径和服务器端路径
客户端路径一定要加工程名          /day09/ServletDemo6
服务器端路径不需要加工程名.            /ServletDemo6
C:/Users/Administrator/AppData/Local/YNote/data/weixinobU7VjmWQYniWIMLxajLby2efwEg/7ce5f59616144e659a521b76ba0597f0/5ca317dddf7541e5bacdc9016a604780.jpg


登录成功后5秒跳转到另外一个页面

使用Http协议中的Refresh头信息
Refresh之前已经介绍可以定时页面跳转,需要使用程序设置头信息才可以
response中设置响应头  
setHeader(String name,String value); 针对一个key对应一个value的响应头
setDateHeader(String name, long date);
setIntHeader(String name,int value);

解决中文乱码问题
response.setContentType("text/html;charset=UTF-8");


读取WEB工程下的文件 传统方式读取文件.相对的JVM的路径 但是现在是一个web项目,相当于JVM的路径,现在JVM已经交给tomcat管理
ServletContext功能
功能1 读取全局函数 getRealPath getResourceAsStream
功能2 获得MIME的类型 用于上传和下载 getMimeType("1.html");
功能3 作为域对象存储数据
范围
创建:整个web项目.而且全局的对象 服务器启动的时候,服务器为每个web项目创建一个单独的ServletContext对象
销毁: 服务器关闭的时候
功能4 读取web项目下的文件
Response的概述 Response代表响应的对象,从服务器向浏览器输出内容 响应行 setStatus 设置状态码 响应头 addDateHeader addHeader addIntHeader
针对一个key对应多个value的头信息  响应体    getOutputStream()    getWriter()
文件下载的方式
1,超链接下载,直接将文件路径写到超链接的href中,--前提:浏览器不支持.(不支持就会下载,支持就会默认打开了)
2,手动编写代码额方式完成文件的下载
设置两个头和一个流
Content - Type 文件的MIME的类型
Content - Disposition 以下载的形式打开文件(告诉浏览器不要打开了,直接下载)
InputStream 文件的输入流
总结
response 输出响应内容的方法
使用字节流输出中文 是否出现乱码跟浏览器的编码有关系
解决: 设置中文转成字节数组取出的时候的编码 设置浏览器打开的时候编码
字符流输出中文一定会乱码,response的字符流的缓冲区的默认编码是ISO-8859-1.
解决 设置response的字符流的缓冲区编码 设置浏览器的打开编码

Request的概述 功能1 获得客户机的信息
Request代表用户的请求
获得请求方式
getMethod
获得请求路径
getRequestURI
会话技术 会话: 用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程是一次会话

场景的会话技术
Cookie   将数据保存到客户端浏览器session  将数据保存到服务器端
为什么使用会话技术? 私有的数据的存储

Cookie 向浏览器保存数据
HttpServletsponse        void addCookie(cookie,cookie)获得浏览器带来的Cookie        cookie()getCookies();创建一个Cookie对象        Cookie(String name,String value);
JSP的简单概述 JSP Java Server Pages(Java 服务器端页面)
JSP执行过程: JSP会被翻译成Servlet,编译成class运行

JSP的嵌入Java代码
<%! %> 翻译成类中的成员部分,定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性.
<% %> 翻译成类的service方法的内部的内容,定义变量,定义类,直接写代码块
<%= %> 翻译成service方法内部的 out.print();

Cookie的常用API getName(); getValue(); setDomain(String domin); 设置Cookie有效域名 setPath(String path)-设置Cookie的有效路径 setMaxAge(int maxAge)- 设置Cookie的有效时间

Cookie的分类有关 会话级别的Cookie:默认的Cookie.关闭浏览器就会销毁 持久级别的Cookie:可以设置Cookie的有效时间,那么关闭浏览器Cookie还会存在,手动销毁持久性Cookie.setMaxAge(0)-- 前提是有效路径必须一致









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2