Java Web(杂上)

Servlet

基本概念

Servlet是基于Java语言的Web服务器端编程技术,按照Java EE规范定义,Servlet是运行在Servlet容器中的Java类,它能处理Web客户的HTTP请求,并产生HTTP响应。

Servlet的声明周期

实例化——>初始化——>处理服务——>销毁

HttpServletRequest

  1. 获取参数信息
1
request.getParameter("参数名") ;
  1. 获取报头信息
1
request.getHeader();
  1. 指定请求字符编码(解决post请求乱码问题)
1
request.setChracterEnCoding("utf-8");
  1. 获取请求链接
1
request.getRequestURI();
2
//为使用Servlet里的service方法做基础。
  1. 保存数据
1
request.setAttribute();
  1. 获取数据
1
request.getAttribute();
  1. 删除数据
1
request.removeAttribute();

get和post的区别

  • 地址栏
    get将参数显示在地址栏中,post地址栏不可见参数,将参数带在请求数据中
  • 安全性
    get请求(查阅)<post请求(新增、删除、修改)
  • 效率
    get请求>post请求
  • 编码方式
    get默认编码格式是ISO-8859-1,post请求报头默认编码格式是ISO-8859-1,请求数据体编码格式是页面的编码格式
  • 传递参数大小
    get请求,2kb;post请求默认不限制,通常在服务器中使用代码限制。

单例模式

==这一块东西有点多以后补充吧==

基本概念

在内存中仅存一个对象,只能new一次。

优点

  • 优点
  1. 节省内存开销
  2. 能共享一个对象

    步骤

  3. 构造函数私有化
  4. 自身创建一个对象,
  5. 对外提供公共方法,返回当前对象

web层共享数据的范围

  • 应用对象:ServletContext application
    使用范围:同一服务器,不同客户端,均可以共享对象里的数据,当服务器重启时,数据失效。(使用场景:查看当前在线人数等)

  • 会话对象:HttpSession session
    使用范围:同一服务器,同一客户端,均可以共享该对象里的数据,当浏览器关闭时失效。(使用场景:保存当前登录用户信息,购物车信息等)

  • 请求对象:HttpServletRequest request
    使用范围:同一服务器,同一客户端,共享该对象中的数据,当发起请求时,数据失效。(使用场景:登录等页面信息,也可以保存校验信息)

  • 页面对象:PageContext page
    适用范围:同一服务器,同一客户端,同一个页面中,共享该对象数据,一旦页面刷新或跳转,数据失效。(使用场景:较少)

JSP

本质还是servlet。

JSP的声明周期

编译阶段(编译为servlet)——初始化阶段(初始化servlet)——执行阶段——销毁阶段

JSP脚本元素

  • 声明

定义成员变量和成员方法,全局变量

1
<%! int i=100; %>
  • 注释

不被翻译,不被编译,没啥用

1
<%-- hello --%>

被翻译,不被编译,原原本本发到客户端

1
< !-- hello -->

被翻译,不编译,不在相应文件内容中

1
<%/* hello */%>
  • 表达式(注意结尾不要有分号)

    1
    <%= %>
  • 脚本段(里面写Java代码)

1
<%int a=1; %>

三大指令

  • page
  1. 定义了脚本语言的类型:language=”java”
  2. 告诉浏览器对html页面的内容采用哪种编码格式:
  3. 告诉浏览器复渠段返回的内容的编码格式:contentType
  • include
    组合JSP页面

    1
    <%@include file="/page/index.jsp"%>
  • taglib
    在我们查询用户信息时,我们用来遍历数据库中查询出来的多条记录,要jstl.jar包

1
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

九大内置对象

  • application
    同一服务器,不同客户端,均可以共享对象里的数据,当服务器重启时,数据失效。
  • session
    同一服务器,同一客户端,均可以共享该对象里的数据,当浏览器关闭时失效。
    session有效期设置
1
<session-config>
2
	<session=timeout>30</session=timeout> <!--默认以秒为单位-->
3
</session-config>
  • request
    同一服务器,同一客户端,共享该对象中的数据,当发起请求时,数据失效。
  • pageContext
    同一服务器,同一客户端,同一个页面中,共享该对象数据,一旦页面刷新或跳转,数据失效。
  • out
1
out.print:字符
2
our.write:字节码
  • config
    与当前JSP页面的Servlet对应的ServletConfig对象。
  • exception
    其他地方抛出的Throwable对象,仅当<%@pageisErrorPage=”True”%>时有效。
  • page
    指向页面自身的方式,相当于this关键字。
  • response
    当前响应对象。
  • Cookie
    不安全、保存在磁盘、有效期自己设定。
    设置步骤:
  1. 获取Cookie
  2. 设置Cookie的有效期
  3. 设置保存项目路径
  4. 返回Cookie信息给客户端
  5. 获取Cookie
  6. 清除session和cookie

EL表达式

用法感觉有点像jquery,${…}
==详细请参考网络,我就写一些常用的==

作用

  1. 访问作用域对象(pageContext,request,session,application)
  2. 简单的计算。,输出到浏览器

注意:

当我们访问的内容不存在时,输出一个空字符串:””,jsp中输出null;

Set不能通过下标值获取,因为其没有下标值

关系运算符

关系运算符 说明
==或eq 等于
!=或ne 不等于
<或lt 小于
>或gt 大于
<=或le 小于等于
>=或ge 大于等于
逻辑运算符 说明
&&或and
or
!或not

c标签

导入jstl.jar包

常见标签

  • <c:out>
    用于在JSP中显示数据,就像<%= … >
  • <c:set>
    用于保存数据
  • <c:remove>
    用于删除数据
  • <c:if>
    和平时if一样,不过没有else
  • <c:forEach>
    基础迭代标签,接受多种集合类型