jsp开发技术
一、为什么说JSP也是动态web开发的一项技术呢?这是因为写JSP虽然像是在写HTML,但是JSP允许在页面中嵌套Java代码,或者利用某个标签表示Java代码(EL与jstl)。这就使得我们在写JSP时能够获取请求对象Request和响应对象Response等这样的web开发常用对象,实现与浏览器的交互。
jsp在第一次被访问时会被Web容器翻译成servlet,在执行
过程:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行(实际运行jsp.java)最终运行class文件;
PS:被翻译后的servlet在Tomcat的work目录中可以找到;
二、page三大指令;
1) page指令
2) include指令
3) taglib指令
三、jsp 九大隐式对象
名称 类型 描述 out javax.servlet.jsp.JspWriter 用于页面输出 request javax.servlet.http.HttpServletRequest 得到用户请求信息, response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息 config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数 session javax.servlet.http.HttpSession 用来保存用户的信息 application javax.servlet.ServletContext 所有用户的共享信息 page java.lang.Object 指当前页面转换后的Servlet类的实例(在普通类中的this) pageContext javax.servlet.jsp.PageContext JSP的页面容器 exception java.lang.Throwable 表示JSP页面所发生的异常,在错误页中才起作用
四、jsp有四大作用域 作用分别如下:
pageContext域:当前jsp页面范围
request域:一次请求
session域:一次会话
application域:整个web应用(相当于ServletContext这个域);
五、
1)pageContext是一个域对象
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)
pageContext可以向指定的其他域中存取数据
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
---依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找;
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% pageContext.setAttribute("username", "小红帽"); pageContext.setAttribute("username", "大红帽",PageContext.REQUEST_SCOPE); pageContext.setAttribute("username", "小蓝帽",PageContext.SESSION_SCOPE); pageContext.setAttribute("username", "小黄帽",PageContext.APPLICATION_SCOPE); %> <%=pageContext.findAttribute("username") %> </body> </html>
这个地方只打印出来了小红帽 这就是前面所说的 在某个域中获取后将不在向后寻找;因此在取名key值的时候 名字最好不要相同;