jsp周末总结

来源:互联网 发布:剑三毛毛捏脸数据 编辑:程序博客网 时间:2024/05/18 14:46
jsp  java   server  page做动态页面    是j2ee的一套规范    jsp=java+jsp+html+cssJSP的作用是来替换servlet显示信息的功能    jsp本质上讲就是servlet只不过jsp擅长控制跳转 业务处理    jsp擅长前台展示    javaBean、jsp组成        jsp除了做界面还要做控制层MVC模式:将控制层与视图层分离    1、M(Model模型)---JavaBean,java类包含三层架构    2、V View 视图层  jsp,html显示    3、C Controller控制器 servlet控制和转发请求first.jsp---显示当前时间    1、翻译阶段  jsp--.java    当容器接受客户端的第一次对jsp请求后 先判断jsp是否存在,不存在则返回404,存在则先编译为一个servlet    2、编译阶段    将编译后的servlet的源文件编译成一个字节码文件 然后由容器将其装载进虚拟机并实例化    3、执行阶段    调用翻译后的servlet的对应init()、service方法、destory()    补充:    ①如果被请请求的jsp源文件内容发生变化,那么要重新将jsp翻译成servlet,再编译,再装载和实例化,最后运行servlet    ②如果第二次请求jsp时 此时若被请求的jsp已经有对应的servlet实例,那么久直接运行该servletscript.jsp    jsp中的元素:脚本元素、指令元素、动作元素    1、脚本元素:嵌套java代码    a、声明、语法:<%声明中的内容%>    作用:在servlet中声明一些成员变量、成员方法和内部类    注意:不能使用表达式和隐含对象    b、表达式    <%=expression%>    作用:将pression输出到out流中    expression可以是算数逻辑 常量 关系表达式 变量 有返回值的方法。    注意expression都一律被转换为字符串后再写到out输出流中    expression中不能有分号jsp中的9种隐含对象    page当前的jsp页面,    pageContext 当前jsp页面的上下文    request 封装请求的信息    response 封装响应    session 会话    application 指web应用就是servletContext    out 输出流    config 配置信息    exception 异常信息    当isErrorPage=true 时  才可以使用该对象    特点:表达式翻译进servlet后变成了out.print(exception)    该代码处于-jspservice方法中脚本(Scriptlet)    语法<%java code%>    作用:在jsp中嵌入任何java代码  不能嵌入成员变量 成员方法 所以在此模块声明的变量为局部变量     任何逻辑的代码都可以放在脚本标签中    如for循环、匿名内部类 连接数据库 创建对象等    特点:脚本被编译进servlet的jspservice方法中    指令元素:指令用来提供整个jsp网页相关的信息    并且用来设定jsp页面的相关属性    page指令        可以写多个page标签 多个import        语法<%@page attributeName=""%>        作用:利用page指令中的属性可以和容器进行通信,这些属性的设置,对整个jsp都有影响。        page指令中的属性:            language=java  定义编程语言 目前只能是java            contentType="text/html,charset=UTF-8"        定义response中的内容类型和编码格式 和jsp页面的编码格式         isErrorPage="true|false" 默认为false    import=""导包    session="true|false"规定是否可以使用session    默认为false    buffer="none|8kb|sizekb"默认8kb    指定到客户端输出流的缓冲模式    如果是none则不缓冲,如果指定数值    那么输出就用不小于这个值得缓冲区进行缓冲    autoflush=“true|false” 默认为true true:当缓冲区满时到客户端的输出被刷新false    false:当缓冲区满时出现异常 表示缓冲溢出    isThreadSafe="true|false"    用来设置jsp文件是否能支持多线程的使用    如果为true 那么一个jsp能够处理多个用户的请求    反之则一次只能处理一个请求    info=“text”    关于jsp页面的信息 定义一个字符串 可以使用getServletinfo获得    extends=“。。。。”    继承某个父类    isELIgnored="true|false"    指定EL表达式语言是否可以忽略 如果true则忽略 反之可以使用EL    include指令        <%@include file="url"%>称之为静态导入(静态包含)    作用在一个页面中导入另一个页面的内容     特点:jsp翻译为servlet后就将被导入的页面内容嵌入到servlet中 导入时间发生在翻译阶段    被导入的资源  html  xml jsp等    优点执行效率高 之翻译一次    缺点 如果导入多个页面 当其中一个页面内容发生变化 就需要将所有页面都翻译一次    teglib指令    <%@ taglib uri="" prefix=""%>    指定在jsp中要使用的标签库描述文件 *.tld 的路径    动作元素 jsp自带的标准标签    语法<jsp:tagName/>    动态导入 动态包含        语法<jsp:include page="url" fluse="true|false"/>或者<jsp:include page="url" flush="true|false">{<jsp:param,,/>}        </jsp:include>    特点:动态导入发生在执行阶段        也就是运行servlet的时候才动态生成被导入的页面内容,然后嵌入到调用页面,最后将两个页面一起,返回给客户端         注意:在翻译阶段并没有生成被导入的页面的内容。没有跳转 请求还是同一个        缺点:执行效率没有静态导入高        优点:如果没有导入页面内容发生变化 调用页面不必重新编译    foward(服务器内部跳转)        语法<jsp:foward page="url"/>或者        <jsp:foward page="url">{<jsp:param\\\>}*        </jsp:forward>    jsp中的注释    <!---->    只能注释html和xml中的静态内容 不能注释脚本元素 指令元素 和动作元素 如果注释 他们还是会被编译执行     隐藏注释     <%-- --%>     可以注释jsp中的所有内容     脚本注释     <%    ///**//** */     %>    三种注释的区别     servlet源文件  客户端页面源文件    浏览器显示html/xml 出现     出现              不显示隐藏注释  不出现     不出现           不显示 脚本注释   出现      不出现              不显示EL:通过el标签来取数据和输出数据    简化代码,尽量在jsp中不适用java代码语法:${输出数据或对象 }    webContent/WebRoot        文件夹:el            jsp:el.jsp一、el中的表达式    a、算数表达式        +、-、*、/    b、关系运算符        ==或eq、!=或ne、<或lt、> 或gt、<=或le、>= ge    c、逻辑运算符        &&或and、||或or、!或not    d、判空运算符        empty        <%empty name>二、表达式可以使用的隐含对象    a、pageContext  jsp页面的上下文,唯一一个jsp和el都有的隐含对象        ${pageContext.servletContext/session/getrequest }    b、param 把请求中的参数和单个值 进行映射        ${param.name }    c、paramValues把请求中的参数和一个array值进行映射 获取多选框的值        ${paramValues.hobby }    d、cookie 把请求中的cookie和单个值进行映射        ${cookie.name }    e、initParam把web应用上下文的初始化参数和单个值进行映射        ${initParam.name }    f、pageScope把page范围中的key和value进行映射        ${pageScope.name }    g、把request范围内的key和value映射        ${requestScope.name}    h、sessionScope  session范围内key、value映射           ${sessionScope.name}    i、applicationScope  application范围内key value映射           ${applicationScope.name}    如果没有指出范围,默认从page request session application开始查找,若找不到就往更大的范围找jsp中使用javabean 创建和使用javabean对象的时候尽量不使用java代码    javaBean 提供属性 构造器        set  get方法 实现序列化    1、语法    jsp中获得或者创建javaBean对象    <jsp:useBean id="user" class="包名+类名" scope="page|request|session|application"/>    id user的对象引用    class 包+类名    scope scope默认为page        user对象的存放范围    作为该对象放置在scope中的属性名    scope.setAttribute("",);    2、执行流程    user!=null可以使用该对象 在页面上输出其属性值        简化jsp代码,且JAvaBean永远不会为null    设置javaBean对象中的属性值    (1) 方式一语法: <jsp:setProperty name="对象引用" property="propertyName" value="">例如: <jsp:setProperty name="user"property="name" value="jack"/>执行流程: user.setName("jack");(2) 方式二语法: <jsp:setProperty name="对象引用"     property="propertyName"/>    例如: <jsp:setProperty name="user"     property="name"/>    name: 它的值和标签useBean中id的值对应,          表示User对象的引用。        property: 它的值和setName()有关。执行流程:a) String value = request.getParameter("name");b) 若value != null, user.setName(value);c) 若value == null,不调用setName()。用途: 将表单中提交的字段信息封装到JavaBean对象的属性中。(3) 方式三语法: <jsp:setProperty name="对象引用"    property="propertyName"     param="">                       param="paramName"/>例如: <jsp:setProperty name="user"     property="name"    param="username"/>执行流程: a) String value =   request.getParameter("username");b) 若value != null, user.setName(value);c) 若value == null, 不调用user.setName();(4) 方式四语法: <jsp:setProperty name="对象引用" property="propertyName" value="<%=\"zhangsan\" %>">   或者value='<%="中国" %>'例如: <jsp:setProperty name="user" property="age" value="<%=30%>"/>执行流程: user.setAge(30);(5) 方式五语法: <jsp:setProperty name="对象引用"     property="*"/>例如: <jsp:setProperty name="user"            property="*"/>"*"匹配了id name password age gender address(根据User中所有set方法的property进行匹配)(6) 方式六语法: <jsp:setProperty name="对象引用"     property="name" value="${}"/>例如: <jsp:setProperty name="user"        property="address"    value="${address}"/>  使用el表达式来获取address的值,从四大范围中  查找address对象,如果找到调用user.setAddress(address);  输出javaBean对象中的属性值    <jsp:getProperty name="对象引用" property=“propertyName”/>    <jsp:getProperty name="user" property="name"/>    执行流程    1、Object o = user.getName();    2、将0全部换位s    3、out.print(s);4、使用标签<jsp:useBean>的四种方式1) <jsp:useBean id="对象引用"    class="包名+类名"     scope="">                                   scope="page|request|session|application"/>特点: 通过new来创建一个对象2) <jsp:useBean id="对象引用"    type="JavaBean实现的接口或继承的父类"     scope="page|request|session|application"/>特点: 如果scope中所引用的对象不存在,不会去自动构造一个对象例如: List list = new ArrayList();session.setAttribute("list",list);<jsp:useBean id="list"type="java.util.List" scope="session"/>或者<jsp:useBean id="list"class="java.util.ArrayList" scope="session"/>3) <jsp:useBean id="对象引用" class="包名+类名" type="JavaBean实现的接口或继承的父类" scope="page|request|session|application"/>特点: 通过new来创建一个对象4) <jsp:useBean id="对象引用" beanName="包名+类名" >type="JavaBean实现的接口或继承的父类" scope="page|request|session|application"/> 特点: 通过反射构造一个对象
原创粉丝点击