本帖最后由 小石姐姐 于 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(); ---用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值.
编写一个类继承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)-- 前提是有效路径必须一致
|
|