http请求协议包
http响应协议包
Http服务器能够调用的动态资源文件必须是一个Servlet接口实现类。
实现servlet类。
a.Tomcat有权创建Servlet接口实现类实例对象
Servlet oneServlet = new oneServlet();
b.Tomcat根据实例对象调用service方法处理当前请求
oneServlet.service()
第一步:创建一个java类来实现Servlet接口。
继承HttpServler抽象类,一般动态资源文件都会放在controller包中。
第二步:重写HttpServlet父类两个方法。doGET或则doPost
浏览器—get–>oneServlet.doGet()
浏览器—post->oneServlet.doPost()
第三步:将Servlet接口实现类信息【注册】到Tomcat服务器
为了是HTTL服务器能够识别动态资源文件,需要在设置WEB-INF文件夹中的web.xml文件。
mm controller.OneServlet
Tomcat 将会生成String mm = "controller.OneServlet"
http://localhost:8080/FristWebProject/controller/OneServlet.class这样写太麻烦
所以可以使用别名。
mm /xxx
http://localhost:8080/FristWebProject/xxx
3.Servlet对象生命周期a.网站中的所有Servlet接口实现类的实例对象,只能由Http服务器负责创建。开发人员不能手动创建这个Servlet接口实现类的实例对象
b.在默认情况下,http服务器接收到对于当前Servlet接口实现类的第一次请求时自动创建这个Servlet接口实现类的实例对象。
在手动配置下,要求Http服务器在启动时自动创建某个Servlet接口实现类的实例对象
mm controller.OneServlet 30
c.在Http服务器运行期间,一个Servlet接口实现类只能被创建一个实例对象
d.zaiHttp服务器关闭时刻,自动将网站中的所有的Servlet对象进行销毁
a.HttpServletResponse接口实现类由Http服务器负责提供。
b.该接口主要负责将doGet/doPost方法的执行结果返回到响应体交给浏览器。
一般会将这个对象称为响应对象。
主要功能:
a.将执行结果以二进制形式写入到响应体中
b.设置响应头中content-type属性值,从而控制浏览器使用对应的编译器将响应体二进制数据编译为【文字,图片,视频,命令】
c.设置响应头中的【location】属性,将一个请求地址赋值给location,从而控制浏览器指向服务器发送请求。
写入数据:
使用getWriter()方法获得PrintWriter输入流对象
使用PrintWriter对象的write()方法写入数据(如果是int类型的数据,则会转换对应的ACII码),一般使用print()方法来写入数据(int类型的数据,不会转换对应的ACII码)。
设置content-type属性:
使用HttpServletResponse对象的setContentType(String s)来设置content-type属性。
例如:
response.setcontentType("text/html;chatset = utf-8")识别文本,识别html标签,设置字符集。
设置local同属性:
response.sendRedirect(String location)
a.HttpServletRequest接口实现类由Http服务器负责提供。
b.负责在doGet/doPost方法运行时读取Http请求协议包中的信息。
一般会将这个对象称为请求对象。
主要功能:
a.读取Http请求协议包中的【请求行】的信息。
b.读取保存Http请求协议包中的【请求头】或者【请求体】中请求参数信息。
c.代替浏览器向Http服务器请求资源文件调用。
获取URL信息,获取请求模式,获取URI:
使用HttpServletRequest对象的
getRequestURL()
返回装有url的StringBuffer对象。
getMethod()
返回装有请求模式信息的StringBuffer对象。
URI:资源精准定位地址(就是URL的一部分),HTTP服务器使用该地址来访问文件。
比如:http://location:8080/myWeb/hhh.html
myWeb/hhh.html就是URI
使用getRequestURI()方法获取URI(StringBuffer类型)。
获取请求参数名:
使用对象中的getParameterNames()
返回请求参数的枚举对象。
Enumeration parameterNames = request.getParameterNames()
while(parameterNames.hasMoreElement()){
String name = paraterNames.nextElement();
....
}
gerParameter(String 参数名)获取对应参数的值。
使用Get方法发送的请求,参数与参数值会存在请求头中,当Tomcat服务器接收到HTTP请求协议包时,Tomcat会将请求头中的信息有utf-8的方式进行解码。
使用POST方式发送的请求,参数与参数值会存在请求体之中,Tomcat不会对其进行解码,而是使用对应的HttpServletRequest()对象进行解码,所采用的是ISO-8859-1字符集。(中文是乱码)
我们可以提前设置对象解码的字符集,
setCharacterEncoding("utf-8")



