1.Servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
1.Servlet的生命周期(什么时候有,什么时候没)
构造函数:当用户第一次访问时调用
init:初始化的方法,当用户第一次访问时调用
service:实现用户需求的方法,当用户访问时被调用,调用多次
destroy:销毁的方法,服务器关闭的时候被调用
当服务器启动的时候,Servlet没有被创建,当用户第一次访问时,创建并初始化Servlet,调用Servlet的service方法。完成用户的功能,之后每一次访问,都只调用service方法,当服务器关闭时,Servlet调用销毁方法
2.服务器启动时加载Servlet
在web.xml里面需配置
<load-on-startup>1</load-on-startup>
3.ServletContext对象
当服务器启动时,他会为每一个web应用创建一个唯一的ServletContext对象代表你的web应用
4.HttpServlet
就是一个Servlet,但是他针对http请求方式的不同,做不同的处理
- get方式参数显示在地址栏,post方式参数在请求体
- get携带的参数小,post携带的参数大
1.HttpServletRequest 请求的对象
- 中文乱码问题
当用户是get请求时,通过地址栏传输数据,地址栏的编码格式是由tomcat决定的,tomcat默认地址栏的编码格式是utf-8。
当用户是post请求时,参数在请求体内传递,请求体内的编码格式是iso-8859-1
此时就会出现乱码,解决方式
req.setCharacterEncoding("utf-8");
- 参数相关方法
获得参数:getParameter
获得一个name对应的多个参数:getParameterValues
2.请求转发与请求重定向
- 页面跳转方式之一:请求转发
request.getRequestDispatcher().forward();
是一种服务器的行为
- 发生在服务器内部的请求转发,又称为服务器跳转
- 地址栏不发生任何变化
- 不能跳转至外部页面
- 可以访问WEB-INF里面的页面
- 请求转发的request是同一个request
- 跳转方式二之请求重定向
response.sendRedirect();
是一种客户端行为,从本质上讲等同于两次请求 - 使用
前后两个页面有数据传递用请求转发,没有则用重定向。
3.Cookie
- 作用
Http协议没有状态,tomcat想判断用户的状态 - 存活时间
默认是浏览器关闭的时候
cookie.setMaxAge(200); //秒
4.Session
- 为什么要有Session?
用来补充Cookie的不足(Cookie只能保存字符串,且保存在客户端不安全) - Session原理
创建Session的时候,服务器将生成一个唯一的sessionid然后用它生成一个关闭浏览器就会失效的cookie。
然后再将一个与这个sessionid关联的数据项加入散列表。
当浏览器端提交到服务器时,会通过sessionid去散列表中寻找属于该用户的Session信息。 - Session的存活时间
30分钟 - 路径总结
加/ 则直接在根目录下找页面
不加/ 则直接从当前目录下找
../ 跳到上一级目录 - 指定错误显示的页面
<!-- 报错是显示的页面的配置 -->
<error-page>
<!-- 报错的状态码 -->
<error-code>404</error-code>
<!-- 报错是显示的页面 -->
<location>/err_404.html</location>
</error-page>
<error-page>
<!-- 服务器异常的类型 -->
<exception-type>javax.servlet.ServletException</exception-type>
<location>/err_404.html</location>
</error-page>
2.JSP(Java Server Page)
Java服务页面,其根本是一个简化的Servlet设计,
实现了HTML语法中的Java扩展,JSP是一种动态页面技术,
主要目的是将表示逻辑从Servlet中分离出来。
1.JSP和Servlet的区别
- JSP经编译后就变成了Servlet
- JSP更擅长表现于页面显示,Servlet更擅长于逻辑控制
- 创建方式不同
- 流行的MVC模式,用Servlet控制业务流程,及Control层,JSP实现View层
2.JSP出现编译异常还会被编译吗?
JSP可以--> xx.java 不可以-->xx.class
3.JSP内容
1.编码
2.代码块 <% %> 在代码块内部可以写java代码
3.表达式<%= %> 可以将表达式中的内容显示在浏览器上
4.注释 <%-- --%> jsp注释
5.指令
<%@ page
language="java"//目前这么多年过去了,还是只有java
contentType="text/html; charset=utf-8" //设置页面格式+页面编码格式
pageEncoding="UTF-8" //设置编码格式
import="java.util.Date" //导包
<%@include %> //包含其他页面 先将代码包含 在处理整个页面
<%@taglib %> //导入标签(jstl)
6.动作(action)
标签
<jsp:include page="01_inc.jsp"></jsp:include> //先处理 在包含
<jsp:forward page="01.jsp"></jsp:forward> //实现请求转发的跳转
7.九大内置对象
out(JspWriter):输出流 将信息输出页面
page(Object):this 当前这个页面 没有任何用处
request(HttpServletRequest):当前页面的请求对象
response(HttpServletResponse):当前页面的响应对象
session(HttpSession):session
config(ServletConfig):
application(ServletContext):
Exception:异常
pageContext(PageContext):
pageContext.getOut();
pageContext.getPage();
pageContext.getRequest();
pageContext.getResponse();
pageContext.getException();
pageContext.getSession();
pageContext.getServletConfig();
pageContext.getServletContext();
pageContext.setAttribute("scope","xxx",PageContext.APPLICATION_SCOPE);
- 四个范围:
- page :当前页面
- request :同一个请求
- session :同一个session
- application :服务器内
- 常用的方法:
- setAttribute
- getAttribute
- removeAttribute
3.EL和JSTL
1.EL(Expression Language)
- EL是一种表达式语言,主要用于查找作用域中的数据,然后对它们执行一些简单的操作,用于对jsp标签的属性赋值。它不是编程语言。
- EL表达式的基本格式由$与{}组成,例如:${user.name} 即其意思就是查询得到user对象中的name属性的值。
- 如果仅使用EL表达式的话则不需要导包,但需要在作用域中去取值。该作用域可以是 其范围由小到大依次是 page(页面上下文对象) request(一次请求对象) session(会话期间对象) application(程序应用对象) ,当没有指定作用域,则默认取值依次从小到大来取
指定搜索方式:${requestScope.hello} - EL表达式如果获取到null值,会 自动把null值转换为空字符串输出。
2.JSTL( JSP Standard Tag Library)
- JSTL是JSP标准 标签库,由apache实现,因为在jsp中出现大量Java代码不利于维护,sun公司就制定了一个类似于html标签一下的jsp标签技术,也有开始于结束标记。我们可以引用标签来调用标签库中的Java代码片段来实现一下操作。使用jsp标准标签库有利于程序的可读性,提高了代码的复用性与编程效率。其目的就是为了jsp中不出现Java代码片段。
- 如何使用jstl ?
- 第一步:引入jstl.jar以及 standard.jar两个架包注:在javaEE5.0以上的版本不需要引入这两个架包,因为在javaEE5.0以上的版本已经包含了这两个架包。
将jstl.jar和standard.jar两个包考到现有工程 WebRoot / WEB-INF / lib 目录下 - 第二步: 使用taglib指令导入要使用的JSP标签
<%@taglib uri="" prefix="" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
uri:JSP标签的命名空间
prefix:命名空间的前缀(简称)
- 第三步: 使用常见的标签
- if标签
- choose标签
- foreach标签
- 自定义标签











网友评论