JSP内置对象
不需要创建的对象:9个,常用的5个:resquest 、response、session、application和out
提交的信息
<form action= “JSP页面” method= get | post >
提交手段
</form>
request对象使用getParameter(String s)方法获取表单提交的信息.
处理汉字信息两种方法
1.对信息重新编码
request将获取的信息重新编码,即用ISO-8859-1(JSP默认编码)进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串。如下列所示:
String str=request.getParameter("message");
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b,“gb2312”);
2.request设置编码
request在获取信息之前使用setCharacterEncoding方法设置自己的编码为gb2312:(页面charset编码)
request.setCharacterEncoding("gb2312");
内置对象request常用方法如下:
getProtocol() 获取用户向服务器提交信息所使用的通信协议,比如http/1.1等。
getServletPath() 获取用户请求的JSP页面文件的目录。
getContextPath() 获取用户请求的当前Web服务目录。
getRemoteAddr() 获取用户的IP地址。
getRemoteHost() 获取用户机的名称(如果获取不到,就获取IP地址)。
getServerName() 获取服务器的名称。
getServerPort() 获取服务器的端口号。
<form> 标记
get方法和post方法的主要区别是:使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中
<input>标记
<input type="输入对象的GUI类型" name= "名字">
GUI类型
(1)文本框text
<input type="text" name="me" value="hi" maxlength="30">
(2)单选框radio
<input type="radio" name="rad" value="red" algin= "top" checked="java" >
(3)复选框checkbox
<Input type="checkbox" name= "ch" value="pink" algin= "top" checked="java">
(4)口令框password
<input type= "passwordt" name= "me" size= "12" maxlength="30">
(5)隐藏hidden
<input type= "hidden" name="h" value= "123" > request对象调用getParemeter方法,通过name的名字来获取由value指定的值。
(6)提交键submit
(7)重置键:reset
<input type="reset" >
<select>、<option> 标记
在select中增加size属性的值就变成滚动列表,size的值是滚动列表的可见行的数目。
<select name="myName" size="正整数">
<option value="item1">
</select>
<textArea name="名字" rows= "文本可见行数" cols= "文本可见列数" >
</textArea>
<table >
<tr width="该行的宽度">
<th width= "单元格的宽度" >单元格中的数据</th>
<td width= "单元格的宽度" >单元格中的数据</td> …
</tr>
</table>
<image src="图像文件的URL" >描述文字</image>可以使用width和height属性
<embed src="音乐或视频文件的URL" >描述文字</embed > autostart属性,是否立刻播放,loop属性,width和height属性
<a href=链接的页面地址? >文字说明</a>
response 对象
动态响应contentType属性setContentType
split利用正则表达式分割有多个空字符串[]正则^取反
web目录上下文(项目地址):request.getContextPath();
javaEE在线文档
几个单选按钮、几个复选框的名字要一样,同一组
响应也包括一些头。response对象可以使用方法
addHeader(String head,String value);
或setHeader(String head ,String value)
头中refresh设置刷新时间
response重定向sendRedirect(URL url)
response对象的setStatus(int n)方法来改变响应的状态行的内容
得到参数:
单个request.getParameter
多个request.getParameterValues
音乐放在webContent
Table标记
Th Tr Td
Java+标签 动态生成表单(标签要放在<%%>外)
<img scr></img>标记
嵌入视频embed
处理超链接
<a href=链接的页面地址?参数1=串值1&参数2=
串值2& 参数n=串值n >文字说明</a>
?&的格式
接收参数:String A=request.getParameter("sizeA");
转换类型 double a=Double.parseDouble(A);
处理中文:
request.setCharacterEncoding("gb2312"); String information_fees=request.getParameter("information_fees"); double number=0; if(information_fees==null) { information_fees=""; } |
分割
String []a = information_fees.split("[^0123456789.]"); double sum=0; for(String s:a) { try { sum+=Double.parseDouble(s); } catch(NumberFormatException exp){}
|
响应
contentType也可(解析方法)
response.setContentType(String s)
如响应Excel表格
addHeader设置头的值,刷新
页面重定向:.sendRedirect(url)
response状态码200正确500服务器内部错误
session对象
http是无状态协议,不保留连接信息
session记录连接信息
- session对象被分配了一个String类型的id号,Tomcat服务器同时将这个id号发送到用户端,存放在用户的Cookie中。
- 简单地说,用户在访问一个Web服务目录期间,服务器为该用户分配一个session对象(称作用户的会话),服务器可以在各个页面使用这个session记录当前用户的有关信息。而且服务器保证不同用户的session对象互不相同。
浏览器没关闭,不同页面同一个sessionID
不支持cookie时,URL重写,向新的URL添加session传递
session对象使用下列方法处理数据:
1.public void setAttribute (String key ,Object obj)
session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字。
2.public Object getAttribute(String key)
获取session对象索引关键字是key的对象。
使session失效:invalidate()方法使得session无效或session对象达到了设置的最长的“发呆”状态时间以及是否关闭服务器,默认session30分钟
application对象
(1) public void setAttribute(String key ,Object obj)
application对象可以调用该方法将参数Object 指定的对象 obj添加到application对象中,并为添加的对象指定了一个索引关键字。
(2) public Object Attribute(String key)
获取application对象含有的关键字是key的对象。
out 对象
out.print out.println
实验
实验3_1 request对象
编写一个JSP页面input.jsp,该页面提供一个表单,用户可以通过表单输入两个数和四则运算符号提交给该页面。用户提交表单后,JSP页面input.jsp将计算任务交给另一个JSP页面result.jsp去完成。
- input.jsp的具体要求
input.jsp页面提供一个表单,要求表单中提供两个text输入框,供用户输入数字;提供一个下拉列表,该下拉列表有加、减、乘、除四个选项,供用户选择运算符号。用户在表单中输入的数字、选择运算符号提交给result.jsp页面。
- result.jsp的具体要求
要求result.jsp页面获取input.jsp提交的数据,并计算出相应的结果显示给用户。
Debug:java比较字符串用equals不用==
<!-- input.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'input.jsp' starting page</title>
</head>
<body>
This is my JSP page. <br>
<form action="result.jsp" method="get">
<input type="text" name="num1">
<select name="op">
<option value="+">+
<option value="-">-
<option value="*">*
<option value="/">/
</select>
<input type="text" name="num2">
<input type="submit" value="提交">
</form>
</body>
</html>
<!-- result.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'result.jsp' starting page</title>
</head>
<body>
This is my JSP page. <br>
<%
String s1=request.getParameter("num1");
String s2=request.getParameter("num2");
String op=request.getParameter("op");
double result=0;
int num1=0;
int num2=0;
if(s1!=null&&s1.length()!=0){
num1=Integer.parseInt(s1);
}
if(s2!=null&&s2.length()!=0){
num2=Integer.parseInt(s2);
}
/* out.print(op); */
if(op.equals("+")){result=num1+num2;out.print(result);}
else if(op.equals("-")){result=num1-num2;out.print(result);}
else if(op.equals("*")){result=num1*num2;out.print(result);}
else if(op.equals("/")){result=num1/num2;out.print(result);}
%>
</body>
</html>