Java jsp技术

 

jsp技术

jsp脚本:

1)<%java代码%> ----- 内部的java代码翻译到service方法的内部

2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print()

3)<%!java代码%> ---- 会被翻译成servlet的成员的内容

jsp注释:  不同的注释可见范围是不同

1)Html注释:<!--注释内容--> ---可见范围 jsp源码、翻译后的servlet、页面 显示html源码

2)java注释://单行注释  /*多行注释*/ --可见范围 jsp源码 翻译后的servlet

3)jsp注释:<%--注释内容--%> ----- 可见范围 jsp源码可见(安全性会高一些)

 jsp运行原理

jsp第一次被访问是会被web容器翻译成servlet:

第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行

PS:被翻译后的servlet在Tomcat的work目录中可以找到

jsp指令:

page指令:属性最多的指令,根据不同的属性,知道整个页面特性

格式:<%@ page 属性名1= "属性值1" %>

include指令:可以把一个jsp文件放到另一个jsp页面里面

<%@ include file="被包含的文件地址"%>

 

 

taglib指令:jsp页面中引入标签库(jstl标签库、struts2标签库)

<%@ taglib uri="标签库地址" prefix="前缀"%>

 

 

jsp的9个内置对象:out, request, response, config, session, application, page, pageContext, exception

out对象:向客户端输出内容     out.write()

out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到respons缓冲

 

 

 pageContext对象:jsp页面的上下文对象

 

page对象与pageContext对象不是一回事

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域中获取属性,在某个域中获取后将不在向后寻找

 四大作用域总结:

pageContext域:当前jsp页面范围

request域:一次请求

session域:一次会话

application域:整个web应用

jsp标签(动作)

1)页面包含(动态包含):<jsp:include page="被包含的页面"/>

2)请求转发:<jsp:forward page="要转发的资源" />

=============================================================

EL技术:EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写

EL最重要的作用:从域中取出数据

jsp脚本:<%=request.getAttribute(name)%>

EL表达式替代上面的脚本:${requestScope.name}

${requestScope.username}
    ${sessionScope.username}
    ${applicationScope.username}
    ${username }

EL从四个域中获得某个值${key};

---同样是依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后将不在向后寻找

1)获得普通字符串

2)获得User对象的值

3)获得List<User>的值
<!-- 模拟域中的数据 -->
<%
    pageContext.setAttribute("name", "pageContxt");
    //存储字符串
    request.setAttribute("name", "request");
    //存储一个对象
    Users user=new Users();
    user.setId(1);
    user.setUsername("lisi");
    user.setPwd("123");
    session.setAttribute("user", user);
    //存储一个集合
    List<Users> list=new ArrayList<Users>();
    Users user1=new Users();
    user1.setId(1);
    user1.setUsername("wangwu");
    user1.setPwd("123");
    list.add(user1);
    Users user2=new Users();
    user2.setId(1);
    user2.setUsername("zhaoliu");
    user2.setPwd("123");
    list.add(user2);
    application.setAttribute("List", list);
%>
<hr>
<!-- 使用脚本取出域中的值 -->
<%=request.getAttribute("name") %>
<%Users u=(Users)session.getAttribute("user");
    out.write(u.getUsername());
%>
<hr>
<!-- 使用EL表达式取出域中的值 -->
${requestScope.name}
${sessionScope.user.username}
${applicationScope.List[0].pwd}
<hr>
<!-- 使用el表达式 全域查找(会从最小的找,底层就是findAttribute()) -->
${name }
${user.username}
${List[0].pwd}

EL执行表达式:${1+1},,${user==null?true:false}等等

 

posted @ 2018-11-16 10:44  井盖同学  阅读(123)  评论(0编辑  收藏  举报