Java Web笔记

入门

servlet命名规范:

  • 包名:全小写,写法:a.b.c
  • 类名或接口名:所有单词首字母大写
  • 变量名或方法名:从第二个单词开始首字母大写
  • 常量名:所有单词的字母都大写,单词之间用”_”分割

实现servlet的三种途径:

  • 实现servlet接口
  • 继承GenericServlet抽象父类
  • 继承HttpServlet父类(最常用)
  • Servlet是单例多线程的工作模式

Servlet声明周期的重要方法:

init(一次)、service(多次)、doGet(多次)、doPost(多次)、destroy(一次)

注解:

@WebServlet(); URL Mappings写法:(按照优先级排序)

精确路径匹配:以”/“开头
最长路径匹配:以”/“开头,以” * “结尾
拓展匹配:以” * “开头
默认Servlet:URL Mapping为”/“
根路径:URL Mapping为””
匹配所有地址:URL Mapping为”/*”

loadOnStartup:

  • loadOnStartup属性用于标记容器是否在启动的时候加载这个Servlet(即实例化并调用其init()方法);
  • 它的值必须是一个整数;
  • 如果该元素不存在或者值为负时,则容器会在该Servlet第一次被请求时加载;
  • 如果该元素值为0或者大于0时,则容器在启动时就加载并初始化这个Servlet。此时,该元素的值越小,该Servlet的优先级越高,容器启动时就越先加载;当该元素的值相同时,按容器自身策略决定加载顺序。

路径写法

常用对象

HttpServletRequest(请求对象)

  • getContextPath:获取上下文路径

  • getServletPath:获取Servlet访问路径

  • getParameter:获取单值请求参数值,返回值是String,若参数不存在,返回值是null

  • setCharacterEncoding:处理请求参数中含中文的乱码问题(适用于post请求方式)后getParameter

  • getParameterValues:获取多值请求参数,返回值是String[],若参数不存在,返回值是null。

  • getRequestDispatcher:获取请求转发器对象,调用转发器对象的forward方法进行请求转发跳转

    • 浏览器地址栏地址保持不变(对客户端是透明的,客户端不参与跳转过程)。
    • 跳转前后的两个资源位于同一次请求范围内。
    • 只能站内跳转(同一个Web应用的资源之间的跳转)。
  • getAttribute:从请求有效范围获取属性,返回值类型是Object

  • setAttribute:向请求有效范围存储属性(“key/value”对)

HttpServletResponse(响应对象)

  • getWriter:获取输出流对象,返回值是PrintWriter

  • setContentType:设置响应的MIME类型,用于解决响应中含中文的乱码问题

  • sendRedirect:重定向跳转(redirect) 状态码 302 重定向

    • 客户端地址栏地址变为跳转后的新地址(对客户端不透明,客户端参与跳转过程)。
    • 跳转前后的两个资源位于不同请求范围内。
    • 可以做站外跳转。
    • 教材P126
    • 教材P93

    有效范围(从小到大):

——用于在服务器端保存值

  • 页面有效

  • 请求有效

  • 会话有效

  • 应用有效