本帖最后由 小石姐姐 于 2018-2-8 16:08 编辑
servlet+tomcat基础
软件的架构
*C/S架构的软件,pc客户端,如QQ..
优点:效果炫,速度快
缺点:后期维护麻烦
*B/S架构的软件,游览器就可以访问到,如京东...
优点:维护方便
缺点:效果不炫,所有代码运行在服务端,导致服务器压力过大.
效果可以使用h5和c3,可以做出很炫的效果
服务器端压力:搭建集群,而且还有AJAX技术.
WEB的资源
*静态资源:
html,css,js,图片...
动态资源(能和数据库相连):
php,asp,servlet/jsp
服务器
*硬件:其实就是一台配置很高的电脑
*软件:必须在一台电脑上安装服务器的软件,这台电脑才能被称为web服务器
常见的Web服务器
*Apache:发布php的
*iis:发布ASP的
*webSphere:支持EE,收费的,大型的
*WebLogic:支持EE,收费的,大型的
*Tomcat:Apache组织研发的,免费的小型额服务器,支持Servlet/JSP
*JBoss:
WEB动态资源的目录结构
Website
----静态资源
----WEB-INF
---web.xml(2.5必须[目前我们使用的是2.5],3.0可以没有它)
---classes(java类写的class文件放在这里)
---lib(jar包)
Tomcat目录结构
bin:tomcat的执行文件
conf:配置文件,server.xml核心配置文件
lib:tomcat需要的jar包
logs:tomcat运行的日志文件
temp:临时文件存放的路径
webapps:tomcat发布web项目的路径
work:tomcat运行jsp的时候,jsp被翻译成Servlet大代码存放的路径
Tomcat一闪消失问题:
没有配置JAVA_HOME环境变量
在startup.bat 里写pause,会让dos窗口暂停来查看错误
Dos命令查看占用端口详情:netstat -ano
协议:规定双方需要遵守的规则
http协议的作用:规范游览器和服务器之间的数据传递。
http协议特点:
基于请求和响应的模型
必须先有请求后有响应
请求和响应必须成对出现
http协议的版本:
1.0:每次响应后即刻关闭了连接
1.1:现在使用,不是每次响应后挂断,等待时间厂里以后没有请求就会挂断
请求部分
*请求行
*提交方式:常用get和post
get的提交方式的参数会显示在地址栏上,而post不会
get往往会有大小限制,而post没有大小限制
get没有请求体,而post有请求体
*提交路径:
*协议版本:
*请求头
都是键值对形式,通常是一个key对应一个value,也有一个key对应多个value
User-Agent :游览器类型,文件下载,下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64
Referer:记录网站的来源,防盗链
If-MOdified-Since:通常与响应中的头Last-Modified一起使用
*请求体
就是post提交方式的提交参数。
响应部分
*响应行
协议版本
状态码:
200:成功
302:重定向
304:查找本地缓存
404:资源不存在
500:服务器内部错误
状态码描述
响应头:键值对,一个key对应一个value 也有一个key对应多个value
Servlet的概述
什么是Servlet
是运行在Web服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用http协议
Servlet就是SUN公司提供规范,接口,来实现动态网页开发的技术
使用Servlet
编写类来实现Servlet接口
使用ServletRequest接收参数
String getParameter(String name)用于接收一个名称对应一个值得数据
String getParameterValues(String name)用于接收一个名称对应多个值得数据
Map getParameterMap();用于接收表单中的所有数据,Map的key是表单提交的参数名称,value是提交参数的值
*****req.setCharacterEncoding("UTF-8");//设置请求体中的乱码(Post)其他的设置不了
req.getParameterMap();//得到一个Map集合
for(String key:map.keySet()){
String value=map.get(key);
syso(value);
} 一、请求的转发:
1、调用HttpServletRequest的getRequestDispatcher()方法获取RequestDispathcher对象;
调用getRequestDispatcher()需要传入要转发的地址:
String path = "testServlet“;(testServlets是地址)
RequestDispatcher requestDispatcher = request.getRequestDispatcher(”/“+path);
2、调用HttpServletRequest的forward(request,response)进行请求的转发。
requestDispatcher.forward(request.response);
二、请求的重定向方法:
1、执行请求的重定向,直接调用response.sendredirect(path)方法;
String path = "testServlet";
response.sendredirect(path);
两者的区别:
请求转发只发出一次请求,重定向发出两次请求;
1、请求转发:地址栏是初次发出请求的地址;
请求重定向:地址栏不再是初次发出的请求地址,地址栏为最后相应的那个地址;
2、请求转发:在最终的Servlet中,request对象和中转的那个热区set是同一个对象;
请求重定向:在最终的Servlet中,request对象和中转的那个request不是同一个对象;
3、请求转发:只能钻法给当前web应用的资源;
请求重定向:可以重定向到任何资源;
4、请求的转发:"/"代表的是当前web应用的根目录;
请求重定向:“/”代表的是当前web站点的根目录;
Post提交方式解决乱码问题
直接到达后台的Servlet。数据封装到Servlet中的request中
设置request缓冲区的编码
request.setCharacterEnconding("UTF-8");
get提交方式解决乱码问题
修改tomcat字符集的编码(不推荐)
使用URLEncoder和Decoder
使用new String()
a标签是get请求方式,用new String()来处理乱码
重定向和转发的区别(redirect和forward的区别):
重定向的地址栏胡发送生改变,而转发不会发生改变
重定向两次请求,两次响应, 而转发一次请求一次响应
重定向路径需要加工程名,而转发不需要加工程名
重定向可以跳转到任意网站,而转发只能在服务器内部
|