日志内容:
一:WEB:
1.应用程序分类:一:桌面应用程序:一般是指采用Client/Server即客户机/服务器结构(简称CS结构)的应用程序。
二:Web应用程序,般是指采用Browser/Server即浏览器和服务器结构(简称BS结构)的应用程序。
2.HTTP请求常用的方式GET和POST;
GET方式会把要传送的请求数据追加到URL后面,再提交到服务器。限制2083字符
POST方式发送请求数据是作为HTTP消息的消息体来发送的。不会作为URL地址的参数传递,理论上没有数据量限制
3.HTTP响应状态码:
200 | 正常 |
302 | 重定向到Location域指出的URI |
304 | 未修改。服务器上的对应文档未修改,客户机本地缓存的文档是最新的,客户机应该继续使用它。 |
400 | 无效请求。客户机的请求有不正确的语法格式 |
403 | 禁止。服务器理解客户端的请求,但拒绝处理它。 |
404 | 未找到。服务器不存在客户机所请求的资源。 |
405 | 不允许此请求方式。请求行中的请求方式对指定的资源不适用。 |
500 | 服务器内部错误。服务器端的程序发生错误而不能完成该请求 |
503 | 服务不可用。由于当前负载过大 |
4.Web应用的根目录
/helloapp:Web应用的根目录,所有的JSP和HTML文件存放于此目录
/helloapp/WEB-INF:存放Web应用的发布描述文件web.xml
/helloapp/WEB-INF/classes:存放各种class文件,servlet类文件也放于此目录
/helloapp/WEB-INF/lib:存放Web应用所需的各种JAR文件。例如,在这个目录下,你可以存放JDBC驱动程序的JAR文件
Web应用发布到Tomcat中的目录为:
<CATALINA_HOME>\webapps
二:1.定义:Servlet 是一个用 Java 编写的程序,此程序在服务器上运行用来处理客户端请求,并作出响应。
Servlet没有main()方法。它受控于另一个Java应用,这个Java应用称为Servlet容器。Tomcat就是这样一个容器。
2. Web服务器应用得到一个指向servlet的请求时,服务器不是把这个请求交给servlet本身,而是先交给部署该servlet的容器。 由容器实例化Servlet,并向servlet提供请求和响应,由容器调用servlet的请求处理方法,处理结果会送回web服务器,再由web 服务器传回客户端。
3.Servlet生命周期:是指创建 Servlet 实例之后其存在的时间以及何时消失。
生命周期:
实例化:Web容器对Servlet进行实例化
Web容器回调它的无参构造方法
初始化:实例化完成之后,马上进行初始化工作。
Web容器回调init()方法
服务:请求路径匹配上Servlet的URL映射时。
Web容器回调service方法——service方法中根据请求方式来调用不同的处理方法(doGet或doPost)
销毁: Web容器在卸载Web应用程序前
Web容器回调destroy()方法
4.HTTPServlet主要方法:
response.setContenType(“text/html;charset = utf-8”);
获取HTTP请求方法: request.getMethod();
获取HTTP请求资源: request.getRequestURI();
获取HTTP参数: request.getQueryString();
获取根目录: request.getContextPath();
获取全路径: request.getRequestURL();
获取IP: request.getLocalAddr();
PrintWriter out = response.getWrite();
out.println(“>>>>>>>>>>>>>>>>>><br>”);
out.print(“dfdfdf”);
String str = “name”;
resquest.setAttribute(name,str);
resquest.getRequstDispatcher(“/demo.do”).forword(request,response);//
5.重定向和请求分派:
1.调用HttpServletResponse.sendRedirect 方法实现重定向
执行方式:response.sendRedirect("目标URL");
2.调用RequestDispatcher.forward 方法实现请求分派(转发)
从ServletRequest中得到一个请求分派器
RequestDispatcher rd = request.getRequestDispatcher("目标URL");
rd.forward(request, response); //转发请求
它们之间的最大区别是:
重定向由客户端来完成工作,而请求分派要求服务器上的某个Servlet来完成任务。
重定向会丢失请求对象中的数据。而请求分派不会。
注意:
重定向和请求分派中的新路径若以“/”开头,意义不同。
重定向中:/代表服务器根路径
response.sendRedirect(“/ServletDemo01/demo.do?name = “+str);
请求分派中:/代表Web应用根路径
http://localhost:8080/WebContextRoot
resquest.setAttribute(name,str);
request.getRequestDispatcher(“/demo.do”).forword(request,response);
6.注:
匹配模式:<url-pattern>(/*) ,(/..)
注:如果同时多个为/*之匹配第一个
模糊:/*.do
更改后台必须重新加载servlet,改网页不用重新加载
*分清重定向和请求分派