JavaEE基础知识

Servlet

  • Servlet主要负责接收用户请求HttpServletRequest,在doGet(),doPost()中做相应的处理,并将回应HttpServletResponse反馈给用户。

CGI和Servlet

  • 通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向服务器上的程序请求数据。
  • CGI缺点:
    • 每个请求启动一个进程。系统开销大
    • 每个请求加载运行一个CGI程序
    • 需要重复编写处理网络协议的代码
  • Servlet优点:
    • 只要启动一个进程,加载一个JVM。系统开销小
    • 多个请求做相同处理时,只要加载一个类
    • 所有动态加载的类可以实现对网络协议以及请求解码的共享
    • 能直接和Web服务器交互,还能在各个程序间共享数据,而普通CGI程序不能
  • 注:Fast CGI已经解决了CGI效率上的问题

get和post请求

  • get请求是从服务器上获得资源,post是向服务器提交数据
  • get表单数据按name=value的形式添加到action指向的URL,两者用”?”连接,变量间用”&”连接;post是将表单数据放在HTTP协议的请求头或消息体中,传递到action指向URL
  • get有长度限制(最大2048字符),post没有
  • get参数会显示在地址栏,post不会
  • get提交表单典型应用是搜索引擎,get方式设计为查询用

转发(Forword)和重定向(Redirect)

  • 转发是服务器行为

    1
    request.getRequestDispatcher("页面地址(不加虚拟路径)").forword(request,response);

    重定向是客户端行为

    1
    response.sendRedirect("页面地址(加虚拟路径)");
  • 转发地址栏不改变,重定向地址栏改变

  • 转发是一次请求,重定向是两次请求
  • 转发可共享request域中数据,用于用户登录(传参给登录后页面)。重定向不能共享数据,用于注销登录返回主页和跳转到其他网站
  • 转发效率高,重定向相率低

Servlet与线程安全

  • Servlet不是线程安全的,多线程并发的读写会导致数据不同步的问题

JSP与Servlet

  • JSP本质上是Servlet
  • MVC架构模式中,JSP适合充当视图(view)而Servlet适合充当控制器(controller)

request.getAttribute()和 request.getParameter()

  • getParameter()是获取 POST/GET 传递的参数值,类型是String,用于客户端重定向时,读取提交表单中的值
  • getAttribute()是获取对象容器中的数据值,类型是Object,可用setAttribute设置成任意对象,使用灵活

JSP九大内置对象

  • request,response,pageContext,session,application,out,config,page,exception

JSP四种作用域

  • page代表与一个页面相关的对象和属性。
  • request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。
  • session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。
  • application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

Cookie和Session

  • Cookie 数据保存在客户端(浏览器端);Session 数据保存在服务器端

  • Cookie 一般用来保存用户信息;Session 的主要作用就是通过服务端记录用户的状态,典型的场景是购物车

  • Session 比 Cookie 安全性更高

0%