JavaWeb详细总结

一、基本概念

  1. jdk:java开发环境包
    jre: java运行环境
    jvm: java虚拟机
  2. 注解:给java虚拟机看的。执行时需要 如:@override @注解名称
    注释:给开发人员看的
  3. url:统一资源定位符 http://localhost:8080/ 
    1)URL地址格式排列为:scheme://host:port/path
    2)组成:
    (1)第一部分是协议
    (2)第二部分是存有该资源的主机ip地址(有时也包括端口号)
    (3)第三部分是主机资源的具体地址。如目录和文件名等 (4)第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。

  4. http:超文本传输协议
    http协议详解

  5. 客户端:客户使用(浏览器、Andriod、ios)
    服务端:提供服务的一端
    客户和服务器都是指通信中所涉及的两个应用进程。客户是服务请求方,服务器是服务提供方。
  6. Http请求(请求报文): 
    (1)请求行(请求方式 资源文件路径 协议/版本号)
    (2)请求头 (以键值对组装的信息,对客户端方面的描述)
    (3)空行(标志请求头的结束)
    (4)请求体 (请求数据)
    Http响应(相应报文):
    (1)状态行(协议/版本 状态码 信息)
    (2)响应头(以键值对组装的信息,对服务端数据的描述)
    (3)空行
    (4)响应体(响应的具体数据)
  7. 请求方式:GET、POST、PUT、DELETE、、、、
  8. GET和POST请求区别:
    GET:
    1.请求的参数以?形式拼接在url后
    2.数据不安全
    3.数据处理能力(不能处理大量数据)

    POST:
    1.请求的参数是放在请求体中
    2.安全(相对安全性)
    3.可以处理大量数据

  9. javaweb基本概念
    静态页面和动态页面的区别
  10. Java----->servlet(以java为基础,为了支持java的Web开发)----->JSP(以servlet为基础,为了支持servlet的界面化)

二、servlet基础

  1. 用户通过html界面来提交数据给web容器,也即tomcat,然后通过tomcat来处理用户的数据,通过request来获取用户提交的数据,response做出相应的返回显示在html文件上,以此进行交互 
    tomcat和servelet
    tomcat和servelet
  2. servlet部署:由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<’servlet>元素和<servlet-mapping>元素完成。
    1)<‘servlet>元素用于注册Servlet,它包含有两个主要的子元素: <servlet-name>:设置Servlet的注册名称
    <servlet-class>:设置Servlet的完整类名。 
    2)一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:
    <servlet-name>:指定Servlet的注册名称
    <url-pattern>:指定Servlet的对外访问路径
    同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
  3. Servlet接口实现类:Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。
    HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。
  4. servlet生命周期:
    1) Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
    2) 装载并创建该Servlet的一个实例对象。 
    3) 调用Servlet实例对象的init()方法,为了初始化servletconfig
    4) 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
    5) WEB应用程序被停止或重新启动之前,Servlet引擎将卸载 Servlet,并在卸载之前调用Servlet的destroy()方法。 
    注意:
    1) 针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
    2) 在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。 
    ( //servlet中的核心方法,作用:接受请求,做出响应
    //每次发起请求,都会执行。根据请求方式,调用对应do_Method()方法)
  5. <load-on-startup>: 标记容器是否在启动的时候就加载这个servlet(实例化并调用其 init()方法)。
    1)它的值必须是一个整数,表示servlet应该被载入的顺序
    2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
    3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
    4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
    5)当值相同时,容器就会自己选择顺序来加载。
    所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。

    
    《servlet>
    	<servlet-name>invoker</servlet-name>
    	<servlet-class>
    		org.apache.catalina.servlets.InvokerServlet
    	</servlet-class>
    	<load-on-startup>2</load-on-startup>
    《/servlet>

6.

request- api :   
1) getMethod();  //获取请求方法  
2) getRequestURL(); //获取请求路径  
3) getServerName(); //获取请求的主机名称  
4) getParameter(String param)-String/null  
	//获取请求参数 param:请求的参数名称  
	//根据参数名称获取参数数据    
5)request.setCharacterEncoding("utf-8")  //设置请求的编码格式  
	

response- api:  
1) setCharacterEncoding("utf-8") //设置响应的编码格式  
   setContentType("text/html") //设置响应的文本类型 
2) setContentType("text/html;charset=utf-8") 
3) getWriter()-PrintWriter //处理响应,获取响应输出流

7. ServletConfig和ServletContext
8. Servlet中getInitParameter,getParameter,getAttribute异同
9. 三大域对象
10. 请求跳转和重定向
总结:
请求转发[转发是服务端行为,客户端只发送了一个请求,跳转的两个界面共享同一个请求对象] 
* 1.url地址没有变化
* 2.跳转的两个界面共享requet中的数据(参数数据,域中数据)
* 3.只能跳转到当前工程的其他资源文件中
* 
* 实现:
* 1)调用HttpServiceRequest的getRequestDispathcher()方法获取RequestDispatcher对象
*  调用getRequestDispatcher()需要传入转发的地址
* 2)调用requestDispatcher的forword(request,request)进行请求的转发 
* 
重定向 [客户端行为,客户端发送了两个请求]
* 1.url地址发生变化
* 2.跳转的两个界面不能共享请求数据
* 3.可以跳转到其他工程的资源文件
* 
* 实现:response.sendRedirect(path);
11. 关于路径的总结:
路径前不带/: 相对路径
路径前带/: 绝对路径,从根目录开始的路径
1)请求转发: web工程根目录 http://localhost:8080/demo/
2)重定向: tomcat根目录 http://localhost:8080/
3)html文件: tomcat根目录 http://localhost:8080/

三、会话管理

  1. cookie理解
  2. session简单理解
    session原理理解
    session应用
  3. session和cookie的联系和区别
  4. 总结:
    1)Cookie:数据保存在浏览器客户端的技术
     Session:数据保存在服务端的技术
    2)Cookie原理
      (1)服务器新建cookie对象
      (2)服务端将cookie信息发送到浏览器
      Response header中
      Set-Cookie:name=Tom
      (3)浏览器得到cookie后,将数据保存在浏览器端
      (4)通过浏览器,下次访问web应用时,请求数据中会带着  cookie信息 Request header中Cookie:name=Tom
      (5)服务端接收到浏览器发送的cookie信息
    3)session原理:
HttpSession request.getSession(boolean create):  
参数:  
true:和getSession()功能一样。  
false:根据客户端JSESSIONID的cookie的值,找对应的HttpSession对象,找不到返回null(不会创建新的,只是查询)。 


  HttpSession request.getSession():内部执行原理: 
  (1)获取名称为JSESSIONID的cookie的值。
  (2)没有这样的cookie,创建一个新的HttpSession对象,分配一个唯一的SessionID,并且向客户端写了一个名字JSESSIONID=sessionID的cookie
  (3)有这样的Cookie,获取cookie的值(即HttpSession对象的值),从服务器的内存中根据ID找那个HttpSession对象:
  找到了:取出继续为你服务。
  找不到:从2开始。 
4)Cookie 和 Session 的区别: 
  (1)Cookie中的数据存放在浏览器中(客户端)
  Session中的数据存放在服务器中 
  (2)Cookie中只能存放String数据
  Session中存放Object数据 
  (3)生命周期

JSP

  1. response.getWriter().write()与out.print()的区别
  2. jsp介绍和原理
    jsp基础语法和九大内置对象
    总结:

待更新。。。。

猜你喜欢

转载自blog.csdn.net/qq_33366098/article/details/80297377