终于看到JSP了,进入实际应用阶段,我原来以为JSP跟ASP或者ASP.NET差不多,今天了解了一下,感觉不是那么回事。JSP是Java Server Page的缩写,是Servlet的扩展。书上解释说:“在传统的网页HTML文件中加入Java程序片断和JSP标签,就构成了JSP网页”
看起来很简单,但是JSP语法都没有看完就遇到问题了:
<% if(false){ %>
She is a girl
<% }else{ %>
He is a boy.
<% } %>
结果是He is a boy, 这里有点不能够理解,不知道JSP容器是怎么解释的,暂时把“He is a boy”当作一个字符串处理
JSP语法:
<%@ %>用来设置和整个JSP网页相关的属性,常用的由Page, include, taglib
<%! %>用于声明JSP代表的Servlet类的成员变量和方法
<% %>用于直接嵌入任何有效的Java语言代码
<%= %>用于显示表达式的值,int或者float类型的值都自动转换成字符串加以显示
<%! int hitcount=1; %> 和<% int count=1; %>的区别?是类成员变量和局部变量的区别。在<%! %>声明中的都是类成员变量。
隐含对象:
使用这些对象的引用变量时不需要做任何变量声明
request javax.servlet.HttpServletRequest
reponse javax.servlet.HttpServletResponse
pageContext javax.servlet.jsp.PageCntext
application javax.servlet.ServletContext
out javax.servlet.jsp.JspWriter
config javax.ServletConfig
page java.lang.Object (相当于Java中的this关键字)
session javax.servlet.http.HttpSession
exception java.lang.Exception
JSP与Cookie:只要客户端不禁止,使用很简单
Cokie[] cookies = request.getCookies();
cookies[0].getName;
cookies[0].getValue();
cookies[0].setMaxAge(30);
cookies[0].getMaxAge();
response.addCookie(new Cookie("cookieName", "cookieValue"));
JSP转发请求:
<jsp:forward page="重新定向的文件" />
如果在a.jsp中,a.jsp请求转发给b.jsp, a.jsp所有的数据输出都无效;此外a.jsp和a.jsp共享同一个HttpRequest对象,因此b.jsp可以通过request.getParameter("name")方法读取请求参数
JSP异常处理:
JSP异常处理是针对每个页面的,不知道能不能在Web.xml中配置,让所有页面的异常处理指向通一个页面(应该有,只是我不知道而已^_^),每个页面都去设置errorpage感觉很麻烦。
<%@ page errorPage="errorpage.jsp" %>
<%@ page isErrorPage="true" %>默认为true
在处理异常的网页中可以直接访问exception隐含对象:<%=exception.getMessage() %> <% exception.printStackTrace(new PrintWriter(out));%>在异常处理页面中也是共享一个HttpRequest对象,应此也可以使用<%=request.getParameter("name");%>
今天就学这么一点点,玩会儿wow先^_^