1> Serlvet 生命周期
A 构造 默认情况第一次使用的时候通过单例模式创建一个servlet对象
B init 初始化 当构造了之后就会调用初始化方法 只调用一次
C server 服务 每次发出请求的时候调用可以调用n次 doGet doPost doPut
D destory 销毁 关闭服务软件重新部署的时候销毁servlet对象
2>ServletConfig对象
获取serlvet初始化参数
调用的时候用
this.getInitParameter(参数名)
3>ServletContext对象
获取上下文信息
A 获取全局参数
ServletContext sc=this.getServletContext()
sc.getInitParameter("ecode");
sc.getContextPath() 项目路径 --项目名字
sc.getRealPath() 发布路径 --发布后在tomcat中的文件路径
JSP编程
1 jsp 进入 Java Server Pages
Servlet作用:用java语言开发动态资源( java 流 )的技术.
JSP作用:用java语言开发动态(java 流)+静态资源(html)的技术
2 JSP特征
JSP必须交个tomcat服务器解析
JSP可以写java代码和HTMl代码
3 JSP 执行的过程
1
http://127.0.0.1:8080/web/index.jsp
2
tomcat中扫描到index.jsp文件
3
tomcat将index.jsp文件解析为index_jsp.java 文件
4
tomcat的JDK将 index_jsp.java转换字节码 index_jsp.class文件
5
tomcat构造和初始化index_jsp对象,其实可以理解为servlet对象
6
tomcat调用index_jsp.class中的service方法
7
tomcat的service方式会通过输出流返回HTML代码到浏览器
8
浏览器接收HTML 并且解析成页面效果显示
4 JSP生命周期
1> 翻译 jsp--->java文件
2 编译 java-->class文件( servlet程序)
3 构造方法(第一次访问)
4 _jspInit方法 (第一次访问)
5 _jspService方法
6_jspDestory() 方法
JSP语法
1 JSP 模板
JSP页面中会自动添加HTML代码,该JSP是模板形式
2 JSP表达式
语法:<%=变量或者表达式%>
作用:向浏览器输出变量或者表示式通过计算后的结果
A 表达式的原理就是翻译成out.prin()流输出HTML/TEXT格式到页面。
B 表达后面是不需要用分号结束的。
3 JSP 脚本
语法:<% java代码 %>
作用:执行java代码
4JSP声明
语法:<% ! 变量或者方法 %>
作用:声明变量和方法 后面JAVA程序可以调用
5JSP注释
语法:<%-- 注释--%>
<%// 注释--%>
<%/* 注释*/%>
6 JSP 编译指令编译前执行
语法:<%@ %>
1 include指令
<%@ includefile="top.jsp"%>
在编译成.class文件之前,键将top.jsp里面的所有代码拷贝到当前位置
2 page指令
语法 <%@ page %>
作用:告诉tomcat如何翻译当前jsp文件
<%@ page
language="java" --使用的语言
import="java.util.*" --需要导入的类
pageEncoding="UTF-8" --jsp编码方式
contentType="text/html; charset=UTF-8" --tomcat将html流发送给浏览器的文件类型和编码方式
errorPage="error.jsp" --当前jsp页面解析错误的时候就会跳转到error.jsp去
isErrorPage="false" --当前页面是不是错误导向页面
%>
3 taglib指令
语法<%taglib %>
作用:标签指令用来解析标签效果
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
7 动作指令 编译后执行
<jsp:动作 />
<jsp:useBean> 用来实例化一个对象 对象名用id表示 class类路径
<jsp:setProperty> 将一个对象中的属性赋值
<jsp:getProperty> 取对象中属性的值
<jsp:useBean id="s3"class="com.bw.bean.Student"></jsp:useBean>
<jsp:setProperty property="name" name="s3" value="shunge" />
<jsp:getProperty property="name"name="s3"/>
<jsp:forward> 转发到另外的页面 直接跳转到指定的页面
<jsp:forward page="index.jsp"></jsp:forward>
<jsp:include> 包含编译后另外一个页面的信息
<jsp:forward page="index.jsp">
<jsp:param name="username" value="god" />
<jsp:param name="pwd" value="123456" />
</jsp:forward>
<jsp:param> 传递参数和值
<a href=index.jsp?username=god&pwd=12345> 跳转页 </a>
JSP内置对象
九大内置对象
jsp | servlet |
|
对象名 | 类型 | 使用范围 |
request | HttpServletRequest | 请求 浏览器--->服务器 |
response | HttpServletResponse | 返回 服务器--->浏览器 |
config | ServletConfig | 用来获取web.xml中的信息 |
application | ServletContext | 整个项目中的全局信息 |
exception | Thrawable | 捕获异常 try/catch throws |
page | this | 当前对象,当前页面对象 |
out | JspWriter---->PrintWriter | 当前页面输出流 |
pageContext | PageContext | 当前页面的上下文,整个页面 |
Session | HttpSession | 会话 浏览器和服务器通讯 |
1 out 对象 JspWriter 带缓冲的PrinterWriter 就是输出流
使用范围是当前页面,超出了当前页无效
PrinterWriter 直接向浏览器输出内容
JspWriter 向Jsp 缓冲区写内容
‘out.print()
‘out.println();
2 pageContext 对象当前页面的上下文
使用范围是当前页面,超出了当前页无效
存值 pageContext.setAttribute("username","zhangsan"); |
取值pageContext.getAttribute("username") |
3 page==this 对象一般用在编译指令中 <%@ page %>
4 request 请求 浏览器到服务器
当前请求存属性值 | request.setAttribute("name","godyang"); |
当前请求取值 | request.getAttribute("name") |
请求传递参数 | <a href="b.jsp?name=shunshun"> b.jsp</a> 或者 <form action="b.jsp" method=post > <input type=text name="name" value="shunshun" /> </form>
|
取得请求参数的值 | request.getParameter(参数名); request.getParameterValues(参数名) |
5 reponse 返回 服务器返回到浏览器
获取返回流 | PrintWriter out = response.getWriter(); |
返回内容形式 | response.setContentType("text/html"); |
返回的编码 | response.setCharacterEncoding("UTF-8"); |
页面重定向 | response.sendRedirect("index.jsp"); |
浏览器端保存cookie对象 | response.addCookie() |
|
|
6 session 会话 浏览器和服务器通讯 当浏览器关闭的时候会话结束
当浏览器第一访问服务器的时候就会产生一个会话
保存会话信息 | session.setAttribute("uname","abc"); |
获取会话信息 | session.getAttribute("uname"); |
7 application 应用 tomcat启动的时候整个项目就是一个应用
当把值存入应用中,只有当tomcat关闭的时候才销毁
保存应用信息 | application.setAttribute("app","appInfo"); |
获取应用信息 | application.getAttribute("app"); |
8 config 读取web.xml中的配置信息
web.xml | <servlet> <servlet-name>configInfo</servlet-name> <jsp-file> /config.jsp </jsp-file> <init-param> <param-name>counter</param-name> <param-value>20000</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>configInfo</servlet-name> <url-pattern>/configUrl</url-pattern> </servlet-mapping> |
config.jsp | counter= <%=config.getInitParameter("counter")%> |
访问 | http://localhost:9000/webThree/configUrl |
9 exception 捕获异常
exception.jsp | <%@ page errorPage="error.jsp" %> <% int a=10/0; %>
|
error.jsp | <%@ page isErrorPage="true" %> <%=exception.getMessage()%> |
Cookie(饼干 ) 用来将信息存储到客户端的浏览器中
案例: 登录之后,下次登录自动输入用户名.
Cookie存信息到浏览器端 | Cookie cookie=new Cookie("loginname", value); //将cookie对象返回给浏览器,浏览器就会将此cookie保存起来 response.addCookie( cookie); |
服务器端取Cookie值 | String loginname=""; Cookie [] cookies=request.getCookies(); if(cookies!=null){ for(Cookie cookie:cookies){ if(cookie.getName().equals("loginname")){ loginname=cookie.getValue(); break; } } } |