servlet的主要功能:交互式浏览和修改数据
访问servlet
http://ip:port/appName/url-pattern
http://localhost:8080/project_name/index.jsp
http协议:
定义了web browser与web service之间的数据交换方式,一种无状态协议。
request:客户端的请求
response:响应客户端请求
HTTP/1.1 200 OK
协议/版本 状态码 文本版本
截获内容:
HTTP/1.1 200 OK // HTTP/1.1 是web服务器使用的版本;200 是状态码;OK 是状态码的文本版本
ETag: W/"472-1198101802343"
Last-Modified: Wed, 19 Dec 2007 22:03:22 GMT
Content-Type: text/html // MIME类型:告诉浏览器所要接收的是哪一类型的数据。以供浏览器显示。
Content-Length: 472
Date: Wed, 19 Dec 2007 22:05:44 GMT
Server: Apache-Coyote/1.1
//以上是Http响应的首部
//响应体中包含了Html以及其他要显示的内容
<html><head><title>User Login</title></head>
<body><center>……</center></body></html>
状态码:
200:成功
302:重定向指令
404:地址不存在
500:系统内部出错
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
解决 Servlet 的中文乱码问题
browser会对ascII之外字符进行编码
(1)响应输出静态页面时 response.setContentType("text/html; charset=utf-8");//返回的文档采用utf-8编码
(2)获取数据过程中,处理中文输入乱码(3 种方法):
方法一:设置字符编码来解决 post 方法提交表单中文乱码问题。
解码:request.setCharacterEncoding("gbk");
编码:response.setContentType("text/html;charset=gbk");
必须在第一个 request.getParameter("name"); 之前执行上面的语句。
方法二:重新生成指定编码的字符串
String name = new String(request.getParamete("name").getBytes("iso-8859-1"));
方法三:修改服务器的编码设置——解决 get 方法提交表单中文乱码问题
例如:Tomcat,通过修改%TOMCAT%/conf/server.xml
加入 URIEncoding="utf-8"
(3)静态 html 页面的中文化问题
<head>
<meta http-equiv="content-type" content="text/html; charset=gbk">
</head>
数据库乱码:
create database xxx default character set gbk;
alter database xxx character set gbk;
同时改jdbc的url:
jdbc:mysql://localhost:3306/xxx?useUnicode=true&charaterEncoding=utf8;
表单提交:
get请求:只能传送少量的数据(2kb左右),一般用于请求访问某个资源。
post请求:发送的数据在http数据包里,相对安全,数据量2M。
通过表单或则响应头修改数据
重定向:response.sendRedirect(url);
@servlet/jsp(或则其他组件)向browser发送url,browser访问新的url
@重定向之前的输出会清空,不会发送~
servlet api 重点:
@首次访问时执行servlet.init(ServletConfig);以后共享
init(config){
thisconfig=config;
init();
}
@service():处理请求,默认调用doGet(),doPost()
@servlet.dertory():清理资源,卸载服务
servlet属性并发性问题,资源共享
如果servlet实现了SingleThreadModel接口,每一个请求会对应一个实例
<load-on-startup>2</load-on-startup>tomcat启动时实例化servlet(后台服务的,数值越小优先级)
设问了特,哔叽
最新推荐文章于 2024-02-07 22:09:49 发布