2008年9月28日 星期日

JSP


JSP有兩種Syntax: JSP page與JSP document
這兩種不能寫在同一個檔案

JSP page: Standard JSP syntax format
Directive <%@ %>
page
import,session,errorPage,isErrorPage等....
include
static的include
taglib
Declaration <%! %>
只執行一次,可在此複寫jspInit()跟jspDestory()
Scriptlet <% %>
一般code
Expression <%= %>
後面不加分號
Action <jsp:actionName />
tag lib也這樣call
Comment <%-- --%>

JSP document: XML syntax format
整個code要用
<jsp:root xmlns:jsp="http://......"
xmlns:myLib="http://......" //這個不一定要
version="....">
</jsp:root>
包起來

原本的三個directives 只剩兩個page與include
<jsp:directive.page ..... />
<jsp:directive.include ..... />
因為taglib在root中宣告

而其他指令也變成
<jsp:declarative> Code </jsp:declarative>
<jsp:sciptlet> Code </jsp:sciptlet>
<jsp:expression> Code </jsp:expression>
request time attribute expression則是 %= ...%
例如 <jsp:include page="%=pageURL%">

另外在XML格式中 static文字輸出要指令(http tag不用)
<html><body>
<jsp:text> 文字HERE </jsp:text>
</body></html>

JSP implicit variable
application
session
request
response
out
page
pageContext
config
exception
p.s. 這些implicit variable只能在_jspService()中使用
也就是只能在sciptlets或expressions中,不能在declaration中

原本jsp檔是不需要deployment的,可以直接用.jsp來access
若要使用deployment來使用一些initial parameter
就會得使用/servlet/servletName來access

除了request、session、application三個scope以外
JSP還提供了page這個scope(pageContext這個variable)
並提供一些方便的function,不用透過request等三個scope variable來取用parameter
如 void setAttribute(String name,Object object,int scope);
其中scope為 APPLICATION_SCOPE SESSION_SCOPE......等

JSP include

分為兩種, static include 與dynamic include
static include使用directive的指令,在translate time就include好
也就是<%@ include file="xxx.jsp" %> 或 < jsp:directive.include file="xxx.jsp">
這種只能include HTML, XML , JSP, 而不能include servlet
而dynamic的include就等同於request用getRequestDispatcher的forward跟include
或用pageContext.include 跟 pageContext.forward
指令為<jsp:include page="xxx.jsp" flush="true"/>
forward則沒有flush , flush不使用的話,預設為false
dynamic的include與forward則可以對servlet 來include
在<jsp:include page="xxx.jsp"> </jsp:include>裡面可以包
<jsp:param name="xxx" value="xxx"/>
來從request中加入parameter,如果原本已經有這個parameter
會將新的插在前面,後面的要用getParameterValues才出的來
另外如果新插入的也有重複,順序是跟呼叫的順序一樣
例如request傳A , include加入b,c , 結果印出來會是 b,c,a
注意!! static的是用file , dynamic是用page
< >

2008年9月27日 星期六

Secure Web Application

Key Word:
Authentication: 證實,證明(確定user的身分)
Authorization: 授權,批准(確定user的權限)
Data integrity: 防止資料在傳輸中被變更,用hash code
Confidential: 資料保密
Auditing : 紀錄log

Authentication 方法
HTTP Basic 最一般,沒加密
HTTP Digest 有加密,可是只有ie可用
HTTPS Client 用SSL加密,但需要certification
HTTP FORM-based FORM版的Basic

user的name,password,role在conf\tomcat-users.xml中定義

而authentication的方法在web.xml中定義
<login-config>
<auth-method> BASIC or FORM ... </auth-method>

如果是BASIC
<realm-name> sales </realm-name>

如果是FORM
<form-login-config>
<form-login-page> /formlogin.html </form-login-page>
<form-error-page> /formerror.html </form-error-page>
</form-login-config>

</login-config>


Declarative Security方法

<security-constraint>
<web-resource-collection>
<web-resource-name>
<url-pattern> /servlet/SaleReportServlet/* </url-pattern>
<url-pattern> /servlet/HttpReportServlet/* </url-pattern>
<http0-method> POST </http-method>

</web-resource-name>

</web-resource-collection>

待續

</security-constraint>

2008年9月5日 星期五

J2EE

JSP中
想要用


想要用custom tag library的話
熟Java就用SimpleTag
如果需要用到script,就得用classicTag
如果不想用Java,要用JSP,就用Tag file