Servlet和JSP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet和JSP相关的知识,希望对你有一定的参考价值。

1、会话管理:
1)URL重写:(少量信息科使用此方式)
通常使用A标签:url?key=value&key2=value2....;(URL和token建用?隔开,token间用&隔开);
--------------------------------------------------------------------------------------------------------------------------------------------------
2)隐藏域:(仅当网页有表单的时候有效,但与URL重写一样不适合跨越多个界面)
<input type="hidden" name="" value="">//此隐藏域可跟随表单提交
--------------------------------------------------------------------------------------------------------------------------------------------------
3)*Cookies:(可在多个页面间传递信息)
创建一个cookie:Cookie cookie = new Cookie(key, value);//创建完后可设置domain、path、maxAge属性,maxAge是生命周期
HttpServletResponse.addCookie(cookie);//将cookie发送给浏览器
ServletActionContext.getResponse().addCookie(cookie);//此方法适合在struts2中使用
***浏览器在访问服务器的时候,会将之前收到的cookies一并发送给服务器***
服务器取得cookie方法:
Cookie[] cookies = request.getCookies();
Cookie cook = null;
if(cookies != null){
for(Cookie ck : cookies ){
if(ck.getName().equals("name")){
cook = ck;
break;
}
}
}
删除原有cookie的方法:(创建同名cookie,并将maxAge设为0)
Cookie cookie = new Cookie("name", "");
cookie.setMaxAge(0);
HttpServletResponse.addCookie(cookie);
前台获得cookie方法:
a.导jquery.cookie.js:$.cookie("key");
b.使用EL表达式:${cookie.cookieKey.value}//获得cookie值; ${cookie.cookieKey.path}//获得cookie的路径值
--------------------------------------------------------------------------------------------------------------------------------------------------
4)***HttpSession对象:(最强大和适用)(占用内存)
HttpSession getSession();//使用getSession().setAttribute()方法来向session中存值;getSession().getAttribute()取值;
部署描述符session-timeout设置session过期时间;
setMaxInactiveInterval单独对某个session设置时间;
==================================================================================================================================================
2、EL表达式语言:${}
1)访问对象属性:
${object.name}或者${object["name"]}后者更为规范
2)访问javaBean:
${bean.stu_name}//访问bean中的stu_name属性
3)关系运算符:
${statement? a:b}//如果statement计算的结果为真,则输出结果a,如果为假,输出结果b
4)empty运算符:
${empty x}//如果x是长度为0的字符串,或者是空map、空数组、空集合泽返回true
==================================================================================================================================================
3、JSTL标签:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
1)set标签:
//以下创建了字符串the wisest fool,并将它赋值给页面范围变量fool
<c:set var="fool" value="the wisest fool"/>
//以下创建了job的有界变量,引用请求范围的对象position
<c:set var="job" value="${requestScope.position}" scope="page|request|session|application"/>
//下面的set是将字符串"tokyo"赋予有界对象address的city属性
<c:set target="${address}" property="city" value="tokyo"/>
--------------------------------------------------------------------------------------------------------------------------------------------------
2)remove标签:
//用于删除有界变量,但无法删除引用的对象
<c:remove var="varName" [scope="page|request|session|application"]/>
--------------------------------------------------------------------------------------------------------------------------------------------------
3)if标签:判断test中的运算结果,若为true时,执行body content,否则不执行。为了模仿if...else 可使用两个<c:if>标签,条件设置完全相反
<c:if test="testCondition" [var="varName"] [scope="page|request|session|application"]>
body content
</c:if>
--------------------------------------------------------------------------------------------------------------------------------------------------
4)choose、when和otherwise标签:(类似于JAVA中的switch和case)
<c:choose>
<c:when test="testCondition">
body content
</c:when>
<c:when test="testCondition2">
body content
</c:when>
<c:otherwise>//放在最后,当以上when全部为假不执行时,执行otherwise中的body content
other body content
</c:otherwise>
</c:choose>
--------------------------------------------------------------------------------------------------------------------------------------------------
5)forEach标签:
//遍历collection集合,显示stu_name属性的值
<c:forEach items="collection" var="varName" [varStatus="num"] [begin="begin"] [end="end"] [step="step"]>
${varName.stu_name}
</c:forEach>
//与map结合使用
<c:forEach item="map" var="varName">
${varName.key}
${varName.value}
</c:forEach>
--------------------------------------------------------------------------------------------------------------------------------------------------
6)forTokens标签:用于遍历特定分隔符隔开的字符串等
<c:forTokens var="item" items="a,b,c,d" delims=",">
<c:out value="${item}"/>
</c:forTokens>
--------------------------------------------------------------------------------------------------------------------------------------------------
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>//调用函数的格式要用EL表达式:${fn:functionName}
7)contains函数:用于测试一个字符串中是否包含指定子字符串(containsIgnoreCase函数与contains类似,但区分大小写)
${fn:contains(myString, "hello")}//判断myString字符串中是否包含hello
--------------------------------------------------------------------------------------------------------------------------------------------------
8)endWith函数:用于测试一个字符串是否已某个指定后缀结尾(startWith与之相反)
${fn:endWith("hello world","world")}
--------------------------------------------------------------------------------------------------------------------------------------------------
9)indexOf函数:用于返回指定子字符串在某个字符串中第一次出现时的索引
${fn:indexOf("hello","e")}//返回1
--------------------------------------------------------------------------------------------------------------------------------------------------
10)join函数:用于将一个数组用特定符号分割开
${fn:join(array, ",")}
--------------------------------------------------------------------------------------------------------------------------------------------------
11)length函数:用于返回集合中的项目书,或者字符串的字符数
--------------------------------------------------------------------------------------------------------------------------------------------------
12)replace函数:将字符串中出现的所有begin用after替换
${fn:replace("hello world", "l", "L")}//结果为heLLo worLd
--------------------------------------------------------------------------------------------------------------------------------------------------
13)split函数:用于将一个字符串分离成一个字符串数组,与join相反
${fn:split("my,world", ",")}
--------------------------------------------------------------------------------------------------------------------------------------------------
14)substring函数:返回一个从指定的起始索引到终止索引的子字符串(substringAfter\substringBefore函数返回子字符串第一次出现后\前的部分)
${fn:substring("hello world",0,4)}
--------------------------------------------------------------------------------------------------------------------------------------------------
15)toLowerCase\toUpperCase函数:用于将字符串转换成小写\大写版本
-------------------------------------------------------------------------------------------------------------------------------------------------- 16)trim函数:用于删除一个字符串开头和结尾的空白
${fn:trim(" hello ")}//返回hello
==================================================================================================================================================


























































































































以上是关于Servlet和JSP的主要内容,如果未能解决你的问题,请参考以下文章

JspServlet

Servlet在启动时加载的tomcat源码(原创)

覆盖 JSP servlet(过滤器“*.jsp”)以包装身份验证模型

JSPServlet中的相对路径和绝对路径

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/Servlet

详解DefaultServlet与JspServlet