Servlet/jsp拾遗

原创 2016年08月29日 16:06:43

jsp内置对象{
request HttpServletRequest 在 _jspService(HttpServletResquest request,HttpServletReponse response);中定义的
用户端请求,这里会包含来自客户端(浏览器)GET/POST等请求参数
request也是作用域的一种 request中储存的键值对也可以用EL表达式获取
request中的键值对在本次请求中才能够获取,其他的域是不能够获取
request中能够做到转发
response HttpServletResponse 也是在_jspService方法中定义的用于向客户端(浏览器)传递信息(不是键值对并不能保存信息)
response可以做到重定向
pageContext PageContext 网页上下文 保存网页相关信息 jsp的其他对象均是通过这个对象获取

session HttpSession请求有关的会话 保存本次会话的相关信息

application ServletContext 保存servlet的相关信息 在jsp中一般不用这个servletContext 用pageContext 在servlet中用ServletContext

config ServletConfig 用于获取xml配置<init-param>信息

out JspWriter用于输出jsp页面的html js等页面信息在servlet中response.getWrite()或response.getOutputStram.write()方式输出

page Object对象就是本个jsp 对象

exception Excrption 针对错误的网页,捕捉的例外

}
Servlet生命周期{

web容器加载servlet,生命周期开始然后调用init()方法进行servlet初始化,这里的的init()方法仅执行一次,后面再次访问servlet时也不会调用这个方法

然后浏览器通过URL访问服务器,访问的同时会调用service()方法 service()会根据http访问的get/post方法调用doGet()/doPost()方法

最后调用destroy()仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

}
JSP、Servlet异同{
jsp是servlet技术扩展,本质上还是servlet,更强调应用的外表表达式,更注重表现层html的显示。servlet更注重java代码,以及相关的逻辑表示。
}
jsp中scope属性{
scope决定了javabean对象存在的范围
有四个值分别是page(默认值) request session application
当page时 他的范围只存在本jsp页面
request范围 存在当前jsp页面共享一个request对象(include forward都算)
session范围 存在整个session周期内
application一旦被创建,则存在整个web周期内
}
JSTL标签{
jstl标准标签库是一个jsp标签集合,它封装了jsp应用的通用核心功能(可以看成对在jsp页面中对java代码的封装)
根据jstl标签所提供的功能,将其分为5个类别
1.核心标签
2.格式化标签
3.sql标签
4.xml标签
5.jstl函数

jstl核心标签{
    引入标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    <c:out>在jsp页面中输出数据 eg:<c:out value="jstl"></c:out>

    <c:set>在页面中创建变量,并且这些变量是有范围的可以跨jsp访问  eg:<c:set var="salary" scope="session" value="${200*2 }"></c:set>
    <c:remove>移除用<c:set>创建的变量
    <c:catch>用来处理产生错误的异常状况
    <c:if>条件判断
    <c:choose><c:when><c:otherwise> 用于在jsp中代替switch case的
    <c:import>通过页面的相对/绝对路径拼接页面
    <c:forEach>用于迭代标签 可用来迭代list等多种集合{
        格式:<c:forTokens
                items="<string>"
                delims="<string>"
                begin="<int>"
                end="<int>"
                step="<int>"
                var="<string>"
                varStatus="<string>">
    }
    <c:forTakens>用于迭代一个有分隔符的字符串{
        <c:forTokens items="google;runoob;taobao" delims=";" var="name">
            <c:out value="${name}"/><p>
        </c:forTokens>
        输出的结果是:google

                runoob

                taobao
    }
    <c:url>用于生成一个url 可以将这个url赋值到一个变量上 并将这个变量设置一个范围

    <c:param>用于在c:url中生成参数{
            <c:url var="testurl" value="http://www.baidu.com" scope="session">
            <c:param name="wd" value="test"></c:param>
            </c:url>
    }

    <c:redirect>重定向

}
jstl格式化标签{
    <fmt:formatNumber>用于格式化数字 百分比 货币{
        <fmt:formatNumber
             value="<string>"
             type="<string>"
             pattern="<string>"
            currencyCode="<string>"
            currencySymbol="<string>"
            groupingUsed="<string>"
              maxIntegerDigits="<string>"
            minIntegerDigits="<string>"
            maxFractionDigits="<string>"
            minFractionDigits="<string>"
            var="<string>"
            scope="<string>"/>
        type表示输出的是什么类型 number(数字 默认) currency(货币) percent(百分比)
        其中 currencyCode currencySymbol表示货币码 货币符号 这个是取决于你定下的区域
    }
}
    <fmt:parseNumber>用于解析一个数字的字符串 就是将字符串转换成数字 同样有三种转换出来的结果number currency percent
    <fmt:formatDate>用于输出不同格式的格式化日期{
    <fmt:formatDate
        value="<string>"
        type="<string>"
        dateStyle="<string>"
        timeStyle="<string>"
        pattern="<string>"
        timeZone="<string>"
        var="<string>"
        scope="<string>"/>  
    value要显示的时间一般是 java.util.Date()类的对象
    type要显示的风格 date time both表示显示的是什么 日期 时间 和都显示
    timeStyle表示时间以什么形式现实 {
        full:下午05时43分00秒 CST
        long:下午05时43分00秒
        medium:5:43:36
        short下午5:43
    }
    dateStyle同上面的timeStyle
    pattern 自定义什么格式输出 pattern="yyyy-MM-dd HH:mm:ss G D z" 输出    2016-08-22 17:50:43 公元 235 CST 
    <fmt:formateDate>标签格式模式 G时代表示  y年份 M月份 d天 h 12小时制小时 H24小时制小时 m分钟 s秒速 S毫秒 E周几 D一年中的第几天 F一个月中的第几个周几(比如一月第二个周三) w一年中的第几周
    W一个月中的地基周 a a.m/p.m指示符 k小时(12小时制的小时) K24小时制小时  z时区

    <fmt:pareseDate>解析一个代表时间的字符串
    <fmt:bundle>绑定资源标签 可以用于绑定properties资源然后用<fmt:message>输出相对应的资源
    <fmt:setLocale>指定地区
    <fmt:setBundle>绑定资源 这个和上面的绑定资源有区别 只能用这种模式
     <fmt:bundle basename="test">
        <fmt:message key="basemsg"></fmt:message>
        </fmt:bundle>
    而<fmt:setBundle>则可以先绑定好了 不在里面就能用<fmt:message>输出
    <fmt:timeZone>指定时区
    <fmt:setTimeZone>指定时区
    <fmt:rquestEndcoding>设置request的字符编码
}
jstl sql标签用于与关系型数据库进行交互的标签{

        <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
    基本使用规则 <sql:setDataSource var="datatest" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="root" password=""/>
            <sql:query dataSource="${datatest }"  var="result" sql="select * from users"></sql:query>
            <c:forEach var="row" items="${result.rows }">
            <c:out value="${row.uid }"/>
            <c:out value="${row.username }"/>
            <c:out value="${row.password }"/>
            </c:forEach>    

    首先创建一个连接的数据 再来做相对应的查询 然后用遍历的方式取出自己想要的数据 

    <sql:setDataSource>指定数据源
    <sql:query>运行查询sql语句{
        <sql:query
        var="<string>"
         scope="<string>"
        sql="<string>"
         dataSource="<string>"
        startRow="<string>"
        maxRows="<string>"/>

    maxRows最大的变量中的最大条数,默认是无穷大 statRow起始的行数
    }
    <sql:update>执行sql insert语句  
    <sql:param>参数 对sql语句中的占位符(?)做一个补充   
    <sql:dateParam> 将sql语句中日期参数设为指定的date对象值
    <sql:transaction> 事物标签 将查询 插入语句封装到事物中 可以避免脏读等错误的产生
}
jstl xml标签提供创建操作xml文档的标签{

    引入xml <%@ taglib prefix="x"  uri="http://java.sun.com/jsp/jstl/xml" %>
    使用案例{

        <c:set var="xmltest">
    <books>
        <book>
            <name>Think In Java</name>
            <author>tom</author>
        </book>
        <book>
            <name>c++ plus</name>
            <author>jun</author>
        </book>
    </books>
</c:set>
<x:parse xml="${xmltest }" var="output"></x:parse>
<x:out select="$output/books/book[1]/name"/>
<x:forEach select="$output/books/book/name" var="item">
    <x:out select="$item" />
</x:forEach>
    其中select后面的表达式是xpath表达式 在其中使用xml表达式的时候应该先加上$标识

<x:out>输出xpath标识后的数据
<x:parse>解析xml数据
<x:set>设置xpath表达式
<x:if> <x:forEach> <x:chose> <x:when> <x:otherwise> <x:transform><x:param>

    }
}
jstl函数{
    <%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions" %>

    fn:contains()函数{
        用法:
        <c:if test="${fn:contains(<原始字符串>, <要查找的子字符串>)}">
            ...
        </c:if>
    }
    fn:containsIgnoreCase()函数用于确定一个字符串是否包含指定的子串,忽略大小写。用法同上
    fn:endsWith()函数用于确定一个字符串是否以指定后缀结尾。 用法同上
    fn:escapeXml()函数忽略用于XML标记的字符。如果不用这个当字符串中有xml 等标签的时候将不会输出 如果有这个将字符串完整输出 用法${fn:escapeXml(<要转义标记的文本>)} 
    fn:indexOf()函数返回一个字符串中指定子串的位置。${fn:indexOf(<原始字符串>,<子字符串>)}
    fn:join()函数将一个数组中的所有元素使用指定的分隔符来连接成一个字符串。用法:${fn:join([数组], <分隔符>)}
    fn:length()函数返回字符串长度或集合中元素的数量。
    fn:replace()函数将字符串中所有指定的子串用另外的字符串替换。用法${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}
    fn:split()函数将一个字符串用指定的分隔符分裂为一个子串数组。${fn:split(<带分隔符的字符串>, <分隔符>)}
    fn:startsWith()函数用于确定一个字符串是否以指定的前缀开始。 <c:if test="${fn:startsWith(<原始字符串>, <搜索的前缀>)}"> </c:if>
    fn:substring()函数返回字符串中指定开始和结束索引的子串。${fn:substring(<string>, <beginIndex>, <endIndex>)}
    fn:substringAfter()函数返回字符串中指定子串后面的部分。${fn:substringAfter(<string>, <substring>)}
    fn:substringBefore()函数返回一个字符串中指定子串前面的部分。${fn:substringBefore(<string>, <substring>)}
    fn:toLowerCase()函数将字符串中的所有字符转为小写。${fn.toLowerCase(<string>)}
    fn:toUpperCase()函数将一个字符串中的所有字符转为大写。${fn.toUpperCase(<string>)}
    fn:trim()函数将字符串两端的空白符移除。${fn.trim(<string>)}
}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Servlet拾遗

每一个Servlet实际上都可以配置多个名称,只需要增加对应的元素即可。 在容器启动时就自动为Servlet初始化1JSP内置对象config对象,可以读取web.xml中配置的初始化参数,此对象实...

JSP拾遗

JSP拾遗基本中可以定义局部变量、编写语句等。 可以定义全局变量、方法、类。指令page指令在Tomcat的conf/web.xml中可以查询MIME类型,如希望页面可以按照Word文档的形式显示,...

一个完整的简单jsp+servlet实例,实现简单的登录

开发环境myeclipse+tomcat6 1、先创建web project,项目名为RegisterSystem, 2、在WebRoot 目录下创建login.jsp文件,只需修改body中的...

servlet&jsp经典总结

本文转自http://blog.csdn.net/zhu_xun/article/details/16897223     如今,通用的浏览器取代了个性化的客户端,HTTP协议取代了个性化的协议,通...

Java项目 1 - 学生成绩管理系统---采用 Servlet+Jsp+JavaBean+MySql 设计方式,

阿桑地方

Jsp之四 servlet请求响应

读取请求(表单)的参数时,只需调用HttpServletRequest的getParameter方法,提供大小写敏感的参数名作为方法的参数。只要提供的参数名与html源代码中出现的参数名完全相同,就可...

JSP+Servlet培训班作业管理系统[20] -番外篇之登录页美工设计

下面的截图是猫哥花了半个小时设计的登录页(PS,千万别说太粉嫩,只是因为培训班要爱护祖国的花朵)。本篇简单的说下设计方法并贴下源代码,然后下一篇将详细的讲述具体设计和实现的想法和步骤。1,首先确定下前...

JSP与servlet之间的传值方式

JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP。 通过对象 request和 session (不考虑 application)完成传值。...
  • sinzen
  • sinzen
  • 2017年01月04日 10:42
  • 7398

Servlet/Jsp实现购物车

(1)用servlet实现简单的购物车系统,项目结构如下:(新建web Project项目  只需要AddItemServlet , ListItemServlet,exam403.jsp三个文件即可...

java jsp+servlet实现登录网页设计

java jsp+servlet实现登录网页设计   这次涉及到四个文件: 登录页面:login.jsp 登录成功欢迎页面:success.js...
  • cai5
  • cai5
  • 2012年02月17日 09:06
  • 35066
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Servlet/jsp拾遗
举报原因:
原因补充:

(最多只允许输入30个字)