1.Tomcat概念:
tomcat是ApacheSoft组织下的一款用于扩展web服务器的一个Servlet容器,此款软件需要在jre环境下运行启动。
2.myeclipse配置Tomcat环境
点击window选择Preferences,这时候出现:
进行第二步配置:
最后,如果你的Tomcat版本比较高怎么办,只要这样就可以了
3.测试:Tomcat是否配置成功
在MyEclipse中启动Tomcat服务器,然后再任意的浏览器中输入:http://localhost:port(Tomcat的端口号,默认为8080),出现如下图,表示配置成功
4.Servlet是什么?
是sun公司开发的用于扩展web服务器的组件规范。
组件:是一个能实现部分功能,需要部署一定的环境下才能运行的模块。
容器:可以运行一个组件的程序。
5.如何开发一个组件?
1.编写符合规范的Servlet组件;
2.引用第三方jar包,编写成class文件;
3.需要打包成一下结构,不过在myeclipse中不用我们手动创建结构,直接生成了,文件结构如图所示:
注意:还有一个Classes:存放的class字节码文件,默认是隐藏的;在Tomcat服务器的webapps也可找到同样结构的文件。
4.将打包的结构部署到Tomcat中的webapps文件夹下
5.启动Tomcat,在浏览器中输入:http://ip:port:appName/要访问的url
注:APPName通常是你的工程的名字,当然不绝对。
6.创建组件的一般要求
1.创建class类命名规则XXXServlet需要继承HttpServlet,需要重写service方法
2.配置web.xml文件,只需要:
7.运行Tomcat,常见到错误代码:Servlet容器向浏览器返回的状态码(重点)
1.404:访问的路径不存在
原因:appname写错、url写错、Servlet-name写错
2.405:方法不被允许使用
原因:service名称不一致、方法内的参数类型不符合规范
3.500:不是一个Servlet组件、没有继承HttpServlet、Servlet-class中的内容写错
8.Http协议:
是w3c组织(万维网联盟)是一种通信协议,定义了浏览器与web应用之间的数据格式
包含:请求(request)和响应(response)
首先我们开启监控端口,点击window->show view->other,搜索TCP/IP,出现如图:
出现监控窗口,鼠标右键点击上部分窗口的空白,选择Properties,出现
启动服务,浏览器这时候的端口号就要是监控port了,实例是通过Servlet组件在浏览器上显示当前系统的时间,结果如图所示:
请求和响应详细解释:
1.请求:浏览器向服务器发送数据
请求数据包含:
请求行:请求方式+请求路径+协议种类+版本
消息头:都是以键值对的方式存储,例如content-type消息头存储字符编码集
实体内容:只有post请求才有数据
2.响应:服务器向浏览器发送数据
响应数据包含:
状态行:协议种类+版本号+状态码+状态信息
消息头:也是以键值对的形式存储的
响应数据:经过业务逻辑运算,要发送给浏览器数据
9.Servlet处理Http协议:
用户访问网页请求和响应过程图(从这图就能看出来图片是盗的^-^):
Servlet容器会将接收到的信息进行封装,封装到HttpServletRequest这个类型的对象上,可以从request这个对象得到我们想要的数据
比如:版本号,用户提交的数据、字符集
Servlet容器在响应浏览器时,也会将一些数据,封装到HttpServletResponse类型的对象上,发送到浏览器上,会自动解析
比如:绑定的消息头、字符集、状态码
注意:每一次请求和响应,Servlet容器都会创建一个request和response对象
10.参数的处理:(怎么从浏览器上获取数据到后台)
请求对象的方法:getParameter(要传参数)
获取浏览器页面的value值,参数要传name属性的值,返回的是字符串类型,页面上没有name值,返回null
11.常用的请求方式:
默认的是get请求方式,特点:提交的数据都会显示在地址栏,可以提交数据的最大长度为4k,相对来说不是很安全。
post请求方式:数据不会显示在地址栏上,数据大小没有限制,相对来说比较安全。
12.处理中文乱码问题
1.服务器接受浏览器端的数据的时候,可能会出现中文论码问题
get请求解决办法:只能是重新进行编码,具体操作为:
String username = request.getParameter("username");
byte[] b = username.getBytes("ISO-8859-1");//首先按照浏览器编码,把字符串变成字节,我的浏览器编码集为ISO-8895-1
username = new String(b,"utf-8");//控制台对应的编码
注:此种方法同样适用post请求
post请求:
request.setCharacterEncoding("utf-8");
2.浏览器接受服务端的数据的时候,也可能出现中文乱码问题
适用response对象设置消息头:
response.setContentType("text/htm;charset=utf-8");
注意:如果把text写错的话,执行响应的时候,浏览器会出现保存文件的效果,所以不要写错