您的位置:首页 > Web前端 > JavaScript

Servlet 与 Jsp核心编程 卷一 学习笔记 01

2007-07-25 01:29 627 查看
1、新建Servlet文件后修改web.xml
<web-app version="2.4"
<servlet>
<servlet-name>ThreeParams</servlet-name>
<servlet-class>coreservlets.ThreeParams</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ThreeParams</servlet-name>
<url-pattern>/servlet/ThreeParams</url-pattern>
</servlet-mapping>
</web-app>
// action="/ProjectName/url-pattern" , 直接访问或链接的url也一样。

2、ServletUtilities.java : 创建静态方法实现代码重用。

public class ServletUtilities {
// 生成网页头:
public static final String DOCTYPE =
"<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.0 " +
"Transitional//EN/">";

public static String headWithTitle(String title) {
return(DOCTYPE + "/n" +
"<HTML>/n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>/n");
}

// 转换类型 :(int 类似)
public static double getDoubleParameter (HttpServletRequest request, String paramName, double defaultValue) {
String paramString = request.getParameter(paramName);
double paramValue;
try { paramValue = Double.parseDouble(paramString); }
catch(NumberFormatException nfe) { paramValue = defaultValue; }
return(paramValue);
}

// 转换字符串中的HTML标准字符:( < > & " )
public static String filter(String input) {
if (!hasSpecialChars(input)) { return(input); }
StringBuffer filtered = new StringBuffer(input.length());
char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': filtered.append("<"); break;
case '>': filtered.append(">"); break;
case '"': filtered.append("""); break;
case '&': filtered.append("&"); break;
default: filtered.append(c);
} }
return(filtered.toString());
}

private static boolean hasSpecialChars(String input) {
boolean flag = false;
if ((input != null) && (input.length() > 0)) {
char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': flag = true; break;
case '>': flag = true; break;
case '"': flag = true; break;
case '&': flag = true; break;
} } }
return(flag);
}}

读取所有参数 :
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
out.print("<TR><TD>" + paramName + "/n<TD>");
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) { 0 或 1 } else { for 输出 }

参数缺失或异常的默认值:
private String replaceIfMissing(String orig, String replacement) {
if ((orig == null) || (orig.trim().equals(""))) { return(replacement); }
else { return(orig); }
} // 在另一个函数replaceIfMissingOrDefault 中 || orig.e("default");
// trim() : 纯空格为缺失; Java 没有 ==,用equals();
// 在格式需要转换时,如调用 Integer.parseInt(), 一定要try,catch NumberFormatException 异常。

HTML标准字符的过滤(如 显示Servlet代码 );
return(ServletUtilities.filter(super.getCode(request))); // 从一个直接getParameter的父类继承的优化了的GoodCodeServlet

3、HTML表单常用标记:
// 都在<form></> 标记间使用
Text :
请填入电话号码:<input type="Text" name="phone" value="" size="10" maxlength="8">

Radio :
<input type="Radio" name="gender" value="Female">女性
<input type="Radio" name="gender" value="Male" checked>男性

CheckBox :
<input type="Checkbox" name="idol01" value="Leon">黎明
<input type="Checkbox" name="idol02" value="LeeHom">王力宏

Password :
请输入密码:<input type="Password" name="pw" maxlength="9">

Submit / Reset :
<input type="Submit" name="other_funtion" value="确定" align="MIDDLE">
<input type="Reset" value="清除" align="MIDDLE">

图片按键 :
<input type="Image" name="submit" align="BOTTOM" src="ex_icon.gif">
// name : 所要代表的按键,可以是 submit, reset, 或其它。

File :
<input type="File" name="upload" size="30" maxlength="100" accept="text/html">
// name : 这文件传输的名称,用以识别之用.

Button :
<input type="Button" name="useless" value="Back"> // name : ID

Select : 卷动选单
<select name="where" multiple size=3 >
<option value="hk" >Hong Kong</option>
<option value="tw" selected>Taiwan</option>
<option value="cn">China</option>
<option value="us" selected>United States</option>
<option value="ca">Canada</option>
</select> // name : ID; multiple : 多选; size : 默认高度

Textarea :
Give comments:
<textarea name="comments" cols="40" rows="4" wrap="VIRTUAL"> </textarea>
// name : ID; wrap : off 表示不使用此属性,physical 时则会强迫刘览器在送资料时将文字中的换行一 并送出,设为 virtual 时则送出连续成串的字(除非使用者按了键盘的 RETURN / ENTER)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: