jsp由浅入深开发必备 author:lxy 学习整理笔记仅供回顾知识 jsp简介: 1、jsp = html + java。 2、jsp原理: jsp就是Servlet,容器会把jsp翻译成Servlet,并编译Servlet源码,执行Servlet。 3、编程中的分工: Servlet作为控制器来用 jsp显示数据 两种一般各自明确分工是良好的编码风格 jsp的基本语法 1、jsp的模板元素,jsp中用html标签来输出排版 2、jsp脚本表达式:把内容输出到页面,<%=表达式%> 对应Servlet中out.print() jsp脚本片段:jsp中实现java逻辑代码,<%语句%> 对应方法中的语句, jsp声明:定义一些成员变量,<%!定义变量%> 对应全局区变量 jsp注释:注释的内容不会被翻译为Servlet语句,<%--注释--%> jsp的指令 1、作用: 是为jsp引擎(服务器)而设计,指示服务器如何处理jsp页面中的内容 2、有哪些指令: page:定义jsp页面中的各种属性 taglib:引入外部标签库(uri:外部空间的名称空间,prefix:前缀) include:页面包含(静/动) 语法:<%@指令名 指令属性="指令值"... %> jsp的动作元素 1、动作元素即内置标签 2、几个内置标签 <jsp:include >动态包含 <jsp:forward >请求转发 jsp的九大隐式对象||对应的Servlet 1、request (HttpServletRequest) 2、response (HttpServletRequest) 3、session (HttpSession) 4、application (ServletContext) 5、config (servletConfig) 6、page (Servlet) 7、exception (Throwable) 8、out (JspWriter) 9、pageContext (PageContext) pageContext对象详解 1、本身是一个域对象,还可以操作ServletContext、ServletRequest、HttpSession 2、pageContext是一个页面域对象, <%pageContext.setAttribute("p","pp",PageContext.REQUEST_SCOPE)%> <%pageContext.setAttribute(KEY,VALUE,SCOPE)%> SCOPE取值: P AGE/REQUEST/SESSION/APPLICATION 3、Object findAttribute(String key);//依次从页面、请求、会话、应用范围获取值(从小到大找) 4、Request getRequest();//获取其他八个隐式对象 5、提供转发和包含功能 pageContext.forward("/1.jsp"); pageContext.include("/1.jsp"); 四大域对象 在不同的资源之间传递数据 1、PageContext(页面) 2、ServletRequest(一次请求) 3、HttpSession(一次会话) 4、ServletContext(应用级) EL表达式 1、主要作用: 向页面输出数据,替换jsp(<%=...%>)中的java代码, 2、语法就像写html标签一样 ${EL表达式} 3、EL从四大域对象获取数据 运算符:点运算符和中括号运算符,就是调用对象的getter方法 4、原理:通过四大域对象获取到java类对象,然后调用get方法获得数据,最后通过out隐式对象的Writer方法写到页面。 5、empty运算符,判断一个对象是否为null,字符串是否为"",集合数组中是否有元素。 十一个隐式对象||类型除了pageContext外别的都是map型的 1、pageContext(pageContext) 2、pageScope 3、requestScope 3、sessionScope 4、applicationScope 5、param 6、paramValues 7、header 8、headerValues 9、initParam 10、cookie 自定义EL函数 1、定义一个public的类,提供静态的实现方法。 2、在web-info下建立一个扩展名为tld的xml文件,在文件中 在文件中定义EL函数的短名称,绑定空间名,定义函数。 3、在web.xml中把tld和名称空间绑定起来 4、在jsp页面中通过taglib的指令标签引入命名空间,页面中使用自动以EL函数 使用自动以EL函数进行防止表单重复提交的实现。(对此稍后具体做个简单实现说明) javabean概念 1、什么才是合格的JavaBean: 类必须是public的, 有无参数构造, 字段都是私有, 提供公有的gette、setter 一般需要实现序列化接口 2、jsp中操作JavaBean的动作元素 <jsp:useBean id="" class="" scope=""/> 原理:先在指定的范围中查找id指定名称的JavaBean,如果没有找到,就实例化一个并放到域中。 <jsp:getProperty property="" name=""/> <jsp:setProperty property="" name="" value=""/> property:属性名称(get去掉首字母小写) name:id指定的对象 value:赋给的值 自定义标签 1、标签的作用: 替换jsp中的java脚本<%%> 2、自定义标签开发步骤 a、直接或间接实现SimpleTag接口,一般继承SmpleTagSupport, b、重写doTage,传入当前页面PageContext对象,容器在调用此方法之前已经调用过setJspContext c、在web-info目录下建立tld d、jsp页面中调用标签 标签的生命周期,每次访问都会重新实例化。 来自群组: Java用户组 |