Servlet

  1. 常用的Web服务器
    1. IIS
    2. Apache
    3. Nginx
    4. Tomcat
    5. Jetty
  2. 通常的动态网页技术
    1. CGI (Common GateWay Interface)
    2. API常用的有(NSAPI,ISAPI)
    3. ASP(Active Server Page)
    4. PHP(Personal Home Page)
    5. JSP/Servlet (Java Server Page)
  3. tomcat目录结构
    1. bin/ 二进制可执行文件和脚本
      • catalina start stop
      • catalina debug run exit
    2. common/ Catalina本身和web应用可加载的类目录
    3. conf/ 配置文件目录
    4. logs/ 日志目录
    5. server/ 服务器所需的类库目录
    6. shared/ Web App共享的类库
    7. webapps/ Web应用所存放的目录applications
    8. work/ Tomcat的工作目录(存放jsp产生的class文件)存储缓存信息(可清除)
    9. temp/ 存放临时产生
  4. conf/server.xml
    服务器的主配置文件
  5. conf/web.xml
    定义所有Web应用的配置
    1. (缺省的Servlet定义和MIME类型定义)
  6. conf/tomcat-user.xml  
    1. 定义了tomcat用户的信息(用于权限与安全)
    2. 管理Tomcat下的所有项目,首先要给权限
    3. <role rolename="manager-gui"/>
    4. <user username="manager" password="123456" roles="manager-gui" />
  7. servlet概述
    1. 服务器端运行的java程序
    2. 放置在web 容器中(tomcat, weblogic, webshare…)
    3. 由容器进行管理
    4. servlet –>容器(java) –>jvm
  8. servlet的基本的开发流程
    1. 三种servlet代码的开发方式
      • 实现servlet接口
        1. 覆盖service方法
      • 继承GenericServlet
        1. 覆盖service方法
      • 继承HttpServlet
        1. 覆盖doGet()方法
        2. 覆盖doPost()方法
        3. doGet浏览器使用get传输
        4. doPost浏览器使用post传输
    2. 建议使用:继承HttpServlet
  9. Get请求和Post请求的区别
    1.  

      GET

      POST

      传输方式

      地址栏提交,a标签

      Form表单 method=”post”

      地址栏是否可见

      可见url?username=abc&password=aaa

      不可见

      大小

      有限

      无限

      根本区别

      读取数据

      改写服务器数据

  10. 委托
    1. doPost()请求里面调用了doGet()方法,委托给了doGet()去执行
  11. Servlet3.0以前比如2.0模式
    1. 需要使用在web.xml中配置映射信息,将url地址对应到Servlet类。
  12. Servlet3.0需要的是注解完成配置。
    1. 例如:
      • @WebServlet("/life.action")
      • 直接将该注解写在类上就可以了
  13. Servlet的生命周期
    1. 加载ClassLoader
    2. 实例化Servlet对象
    3. 初始化:init(ServletConfig)
    4. 处理请求:service方法
    5. 调用:doGet请求或者doPost请求
    6. 退出服务:destory()
  14. Servlet的访问流程:
  15. 获取表单信息
    1. 通过HttpServletRequest的getParameter()方法来获得客户端传递过来的数据
      • getParameter()方法返回一个字符串类型的值
    2. getParameterNames()返回Enumeration类型的值,
    3. getParameterValues()返回一个字符串数组
  16. 设置中文编码
    1. request.setCharacterEncoding("utf-8");//请求
    2. response.setCharacterEncoding("utf-8");//服务器给客户端响应
  17. 设置响应的结果是什么文本类型
    1. response.setContentType("text/html");
  18. 使用GET方式提交
    1. 请求 String userName = new String(userName.getBytes("iso-8859-1"),"utf-8");
  19. Tomcat 官方API
    1. http://tomcat.apache.org/tomcat-8.0-doc/
  20. Servlet官方API
    1. http://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html
  21. JSP 官方API
    1. http://tomcat.apache.org/tomcat-8.0-doc/jspapi/index.html
  22. 会话跟踪
    1. Http协议的无连接性要求出现一种保存C/S间状态的机制
  23. Cookie
    1. Cookie:保存到客户端的一个文本文件,与特定客户相关
    2. Cookie以“名-值”对的形式保存数据
    3. 创建Cookie:new Cookie(name,value)
    4. 可以使用Cookie 的setXXX方法来设定一些相应的值
  24. Session
    1. 会话,在某段时间一连串客户端与服务器端的“交易”。
    2. 可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器会自动终止会话。
    3. 通过HttpSession来读写Session
    4. 在Jsp/Servlet中,如果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些 额外数据追加到表示会话的每个URL末尾,服务器在该标示符与其存储的有关的该会话的数据之间建立关联。如hello.jsp?jsessionid=1234
  25. Cookie和Session的区别
    1. cookie数据存放在客户的浏览器上,session数据放在服务器上。
    2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
    3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
    4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
    5. 建议:
      • 将登陆信息等重要信息存放为SESSION
      • 其他信息如果需要保留,可以放在COOKIE中
  26. Session的常用方法:
    1. Session获取:request.getSession();
    2. 设值:session.setAttribute(key,value);
    3. 取值:session.getAttribute(key);
  27. 客户端和服务器有对应的SessionID
    1. 客户端向服务器端发送SessionID的时候两种方式:
      • cookie(内存cookie)
      • rewriten URL
  28. Application
    1. 用于保存整个WebApplication的生命周期内都可以访问的数据
    2. 在API中表现为ServletContext
    3. 通过HttpServletRequest的getServletContext方法可以拿到
    4. 通过ServletContext的 get / setAttribute方法取得/设置相关属性
  29. 转发
    1. RequestDispatcher接口对象允许将请求转发到其他服务器资源
    2. 通过RequestDispatcher的forward(HttpServletRequest,HttpServletResponse)方法可以将请求转发
  30. 重定向
    1. 使用HttpServletResponse的sendRedirect(目标地址) 方法。
  31. 转发和重定向的区别
    1. 两者的概念
      • 转发是服务器行为,重定向是客户端行为。
      • 转发(Forword)通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法实现的。
      • 重定向(Redirect) 是利用服务器返回的状态吗来实现的。
    2. 区别,多种角度:
      • 从地址栏显示来说
        1. forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
        2. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。
      • 从数据共享来说
        1. forward:转发页面和转发到的页面可以共享request里面的数据。
        2. redirect:不能共享数据。
      • 从运用地方来说
        1. forward:一般用于用户登陆的时候,根据角色转发到相应的模块。
        2. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。
      • 从效率来说
        1. forward:高。
        2. redirect:低。
  32. Servlet多线程机制
    1. Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。
    2. 当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有 多个线程在使用这个实例。
    3. Servlet容器会自动使用线程池等技术来支持系统的运行
  33. MVC模型
    1. 视图(JSP,HTML,VUE,ASP…)
      • 职责:
        1. 数据显示
        2. 发起请求(人机交互)
        3. 减少业务逻辑
    2. 控制器(Servlet)
      • 职责:
        1. 获取前端的数据
        2. 页面跳转
        3. 创建Model层的引用
        4. 创建service层对象
    3. Model(业务模型)
      • service + dao
  34. 过滤器
    1. 为什么使用过滤器
      • 对于项目中公共功能的统一处理。
    2. 使用过滤器的好处
      • 提高代码阅读性
      • 减少代码冗余
      • 提高代码的灵活性
      • 提高代码的可扩展性
    3. 如何创建过滤器
      • 实现Filter接口
      • 实现doFilter方法
        1. chain.doFilter(request, response);执行下一个filter直到目标对象位置
      • 注册过滤器
    4. 过滤器的原理
      • 在容器中对请求和响应进行拦截的一个特殊java类
      • Filter构成一个链式结构
        1. 到达servlet/静态资源 进行拦截
        2. 去:对request拦截
        3. 回:对response拦截
      • 可以有多个过滤器,联合操作
      • 每个过滤器实现一个功能,可以避免每个servlet重复编写同样的代码。
    5. 过滤器的应用场景
      • 权限管理
      • 日志
      • 中文乱码处理
      • 类型转换
      • 等等…
  35. 404页面处理
    1. 在web.xml中配置
      • <error-page>
        1. <error-code>404</error-code>
        2. <location>/404.html</location>
      • </error-page>
  36. 监听器
    1. web监听:监听某个对象的某个动作,类似于swing中的监听。
  37. 常用的监听器对象
    1. ServletRequest
    2. HttpSession
    3. ServletContext
  38. 如何实现监听器
    1. 实现监听器接口:ServletContextListener
    2. 容器启动,监听器创建
    3. 容器关闭,监听器销毁
  39. 如何销毁session
    1. 使用方法invalidate()
      • 使此会话无效,然后解绑定到它的任何对象。
    2. 将Session的最大时间设为0

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐