一、Tomcat
1:tomcat,是ApacheSoft组织下的一款用于扩展Web服务器的
一个Servlet容器。
此款软件,也需要在jre环境下运行启动。
2:myeclipse配置tomcat环境。
在help下方绿色按钮:Configure server -Service-Tomcat-7.X(点击选择enable)-jdk(选择1.7)-launch(选择run mode)
找到tomcat选项中的 x.x,配置相应版本的tomcat容器。
(1) 选中enable
选择tomcat的父路径
(2) launch-run mode
*如果配置的x.x与tomcat版本不一致时,在执行(3)
(3)选择paths中的
ADD JAR/ZIP按钮,导入tomcat文件夹bin中的三个jar包。
3:测试tomcat是否配置成功
打开浏览器:
输入:http://localhost:port
出现 猫,即正常。 http://localpost:8088
8088:是服务器与浏览器之间连接的端口号,是在conf文件下设置的,即:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />(一定要设置没有被使用过的端口号)
还要在:apache-tomcat-7.0.47bin文件下startup.bat
编辑:set JAVA_HOME=E:Program Files (x86)Javajdk1.7.0_15(在第一行)
E:downSoftTencentapache-tomcat-7.0.47in
E:downSoftTencentapache-tomcat-7.0.47conf
二、Servlet:
概念:是Sun公司开发的用于扩展Web服务器的组件规范。
组件:是一个能实现部分功能,需要部署在一定环境下
才能运行的模块
容器:可以运行组件的一个程序。
如何开发一个Servlet:
1:编写符合规范的Servlet组件,继承HttpServlet
2:引用第三方jar包,编译成class文件
3:需要打包成以下结构:
appName(部署名-ServletDay02)
--WEB-INF
--web.xml
--classes:存放的class文件
--lib(可选)
4:将打包的结构部署到tomcat中的webapps文件夹下。
/*如何部署:
* 绿色左边: project:当前部署所在的工程名
* Add-Server-选择之前选择的7.x.-Redeploy(重新部署)
*/
5:启动tomcat,
在浏览器中输入:
http://ip:port/appName/要访问的功能url
appName:部署名
注意:错误代码: servlet容器向浏览器返回的状态码
404: 访问路径不存在
原因: appName写错,webapps下的名字
url写错
servlet-name写错
405:方法不被允许使用
原因:service名称不一致
方法内的参数类型不符合规范
500:
不是一个servlet组件
原因:没继承HttpServlet
servlet-class中的内容写错了类全名
三、http协议:
概念:是w3c组织(万维网联盟)的一种通信协议。定义
浏览器与web应用之间的数据格式;
包含了请求与响应。
1.请求:浏览器向服务器发送数据
请求数据包含:
请求行:请求方法+请求路径+协议种类+版本
消息头:都是以键值对的形式存储的。
比如: content-type消息头存储字符编码集。
实体内容: 只有post请求才会有数据
2.响应: 服务器向浏览器发送数据
响应数据包含:
状态行:协议种类+版本号+状态码+状态信息
消息头:以键值对的形式存储的
响应数据: 经过业务逻辑运算后要发送给浏览器的数据。
四、Servlet如何处理HTTP协议
1 )Servlet容器会将接收的信息进行封装。封装到
HttpServletRequest这个类型的一个对象上。
我们就可以从request这个对象上获取我们想要的数据。
比如:获取版本号
用户提交的数据
字符集
2)Servlet容器在响应浏览器时,也会将一些数据,封装到
HttpServletResponse类型的一个对象上。发送给浏览器后
浏览器会自动解析
如:绑定消息头
字符集
状态码等。
注意:每一次请求与响应,Servlet容器都会创建一个
request和Response
request.setCharacterEncoding("utf-8");
/response.setCharacterEncoding("content= text/html; charset=UTF-8");错误
response.setContentType("text/html;charset=utf-8");
五、参数的处理:
1.请求对象的方法
getParameter(""):
获取浏览器页面的value值。参数要传name属性的值。
返回字符串类型,
页面上没有的name值,返回null.
2.请求方法:
默认的是get请求方式:
特点:提交的数据都会显示在地址栏上,
可以提交数据的大小最多为4k
相对来说不安全
post请求方式:
数据不显示在地址栏上
大小无限制
相对来说安全
六、.处理中文乱码问题:
1.服务端接收浏览器端的数据时:
get请求:
服务端默认用的是ISO-8859-1字符集
String username = request.getParameter("username");
byte[] bs = username.getBytes("iso-8859-1");
username = new String(bs,"UTF-8");
System.out.println(username);//输出在控制台。
此种方法也适合post请求,也可以直接:request.setCharacterEncoding("utf-8");来代替它.
post请求:
request.setCharacterEncoding("utf-8");
2. 浏览器端接受服务端的数据出现乱码时:
使用response对象设置消息头
response.setContentType("text/html;charset=utf-8");