javaWeb-jsp知识点详解

来源:互联网 发布:ubuntu mod dav svn 编辑:程序博客网 时间:2024/05/16 12:10

《一:jsp原理》

1:引擎: servlet引擎,支持servlet的执行环境;JSP引擎:支持jsp文件翻译成servlet和编译成.class文件的环境。

2: JSP翻译成servlet,再被编译成.class文件,存放于:Tocat根路径/work/Catalina/localhost/_log/apache/jsp,过程:

hello.jsp->hello_jsp.java->hello_jsp.class

3:继承关系:

public abstract class HttpJspBase extends HttpServlet implements HttpJspPage{}public final class hello_jsp extends org.apache.jsper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent{}

故jsp本质就是servlet.

1.4:当JSP内容改变时,会重新翻译和编译,生成的三个方法:

_jspInit对应init,     _jspService对应service,   _jspDestory对应Destory;

1.5:jsp如何映射是有jsp引擎处理的,如:
http://loalhost/hello/hello.jsp中的hello.jsp符合通配符映射,在Tomcat根/config/web.xml中有:

 <servlet-mapping>        <servlet-name>jsp</servlet-name>        <url-pattern>*.jsp</url-pattern>        <url-pattern>*.jspx</url-pattern>  </servlet-mapping>

故jsp名字不可取为jsp,会造成冲突

1.6: 定义全局的错误页面:

<error-page>    <error-code>404</error-code>    <location>/404.jsp</location></error-page><error-page>    <error-code>500</error-code>    <location>/500.jsp</location></error-page>

《二:jsp语法》

1.静态的网页代码:HTML

2.动态的java代码,jsp的组成部分如下:

1.JSP的标准指令2.JSP程序代码元素3.JSP标准动作4.标签库       

3.jsp如何嵌入java代码:

3.1:jsp的java脚本表达式    作用:向jsp输出java代码内容    语法:<%=有返回的表达式%>,末尾向out.print()括号中的内容,末尾当然不加;<%=new java.util.Date().toLocalString()%>翻译成:out.print(“new java.util.Date().toLocalString()”);3.2:jsp中的java脚本片段:    作用:在JSP中编写java代码,实现逻辑控制,相当于在service中写代码:    语法:<%java代码;%>,末尾有分号;<%String name=”will”%> :翻译成servlet,_jspService方法中的代码:String name=”will”3.3:jsp中jsp成员变量的声明;    作用:在JSP(Servlet)中声明servlet成员变量/方法    语法:<%!声明语句%><%!private int age=17;%>翻译成:private int age = 17;

4.jsp注释:

html注释: <!--注释内容-->会被翻译到servlet中;jsp注释:  <!--注释内容-->不会被翻译到servlet中

5.jsp的标准指令:

    5.1:特点:不向客户端产生输出;指令在整个JSP范围内有效;为翻译阶段提供了全局信息。    5.2:语法:<%@标准指令     属性=属性值 %>    5.3: 三大指令:            1.page指令:            <%@page language=”java”(毫无争议)   import=”java.util.Date”(各种包用,分隔)  contentType=”text/html;charset=”utf-8”(以此为准)            session=”true”(默认为true)  errorPage=”相对路径“(由本页面跳转到指定的页面,不管全局错误页面了)%>            2.include指令(静态包含):<%@include file=”top.jsp” %>在一个jsp中包含另一个jsp中的内容。            特点:只翻译成一个servlet类,相当于把top.jsp源代码整体拷贝,故此时top.jsp中只需要保留page指令和内容即可。            3.taglib,引入标签库

6.jsp的九大内置对象(翻译在service中):

名称              对象类型                    备注request         HttpServletRequest  response        HttpServletResponsepageContext     PageContextsession         HttpSession             若要使用该对象,必须保证page指令中session属性不能为false,默认为trueapplication     ServletContext      config          ServletConfigout             JspWriterpage            Object(this)exception       Throwable               必须配置page指令isErrorPage=”true

7.jsp中的四大作用域对象:

pageContext---PageContext   只在当前页面有效request---HttpServletRequest    在同一次请求中有效session---HttpSession   在同一次会话中application---ServletContext    在服务器开启时的任何时期共同持有的方法:void setAttrubute(String name, Object val)Object getAttribute(String name)void removeAttribute(String name)

8.JSP中常见的动作元素(WEB-INF中的资源通过请求转发获取):

1.请求转发(也遵循相对路径+不跨域原则)<jsp:forward page=/action/target.jsp”>   <jsp:param value=”17” name=”age” /></jsp:forward>2.请求包含(动态包含,在main.jsp中包含top.jsp):<jsp:include page=”top.jsp” />特点:会分别翻译出两份class字节码文件。

9.常见笔试题:

1.jsp中的九大内置对象?2.JSP中的四大作用域?3.静态包含和动态包含的区别:    3.1:在翻译阶段就在一个java文件中;    3.2:后者包含文件和被包含文件都会翻译成java文件,编译成class文件,运行时才会动态地包含在一起。