JSP学习记--03
Jsp内置对象
主要有: request/reponse/session/application/out
(附加)
http协议的运行过程
(Hypertext Transfer Protocal)协议规定信息在Internet上的传输方法,特别规定了服务器与浏览器的交互方法.
从网站上获取页面时,时首先浏览器在网站上打开一个对刚网络服务器的连接,并发出请求,服务器收到请求后响应,返回结果。
HTTP请求的结构:
包括请求行、头域和可能的信息体
例:
GET/hello.htm HTTP/1.1 //请求头
Host:www.sina.com.cn
税典型的请求包含许多HTTP请求头,提供关于信息体的附加信息及请求的来源。还可能包含信息体,如表单内容。
常用的请求头:GET Cookie Host
HTTP响应结构:
1、 request对象
内置对象request封装了用户提交的信息。
调用相应的方法可以获得封装的信息。
例:<FORM> method=get/post action=”提交信息的目的页面”
提交手段
</FROM>
Action: 将信息提交给指明的页面
获取方法:request.getParameter(String s)
例:request.getParameter(“boy”)
见例:request1.jsp,request2.jsp,request3.jsp
request1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="request2.jsp" method=post name=form>
<input type="text" name="boy">
<input type="submit" value="enter" name="submit">
</form>
</font>
</BODY>
</HTML>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="request2.jsp" method=post name=form>
<input type="text" name="boy">
<input type="submit" value="enter" name="submit">
</form>
</font>
</BODY>
</HTML>
request2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>获取文本框提交的信息:</h1>
<%
String textContent =request.getParameter("boy" );
%>
<br>
<%=textContent%>
<p><h1>获取按钮的名字:</h1>
<%
String buttonName =request.getParameter("submit" );
%>
<br>
<%=buttonName%>
</font>
</BODY>
</HTML>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>获取文本框提交的信息:</h1>
<%
String textContent =request.getParameter("boy" );
%>
<br>
<%=textContent%>
<p><h1>获取按钮的名字:</h1>
<%
String buttonName =request.getParameter("submit" );
%>
<br>
<%=buttonName%>
</font>
</BODY>
</HTML>
request3.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="" method=post name=form>
<input type="text" name="string">
<input type="submit" value="enter" name="submit">
</form>
<%
String str =request.getParameter("string" );
double m=0,n=0 ;
if(str==null )
... {
str="";
}
try
... {
m=Double.parseDouble(str);
if(m<0)
...{
out.print("<br>"+"请输入一个正数");
}
else
...{
n=Math.sqrt(m);
out.print("<br>"+"您输入的数是:"+String.valueOf(m));
out.print("<br>"+"他的平方根为:"+String.valueOf(n));
}
}
catch (NumberFormatException e)
... {
out.print("<br>"+"请输入一个数值");
}
%>
</font>
</BODY>
</HTML>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="" method=post name=form>
<input type="text" name="string">
<input type="submit" value="enter" name="submit">
</form>
<%
String str =request.getParameter("string" );
double m=0,n=0 ;
if(str==null )
... {
str="";
}
try
... {
m=Double.parseDouble(str);
if(m<0)
...{
out.print("<br>"+"请输入一个正数");
}
else
...{
n=Math.sqrt(m);
out.print("<br>"+"您输入的数是:"+String.valueOf(m));
out.print("<br>"+"他的平方根为:"+String.valueOf(n));
}
}
catch (NumberFormatException e)
... {
out.print("<br>"+"请输入一个数值");
}
%>
</font>
</BODY>
</HTML>
注意:空对象错误的避免,加入以下代码:
String str=request.getParameter("string");
if(str==null)
{
str="";
} //可以避免很多调试的麻烦!!
Request对象处理汉字乱码问题:
要用ISO-8859-1进行编码,并将编码存放到一个字节数组中去,再将数组转化为字符串对象。
例:
String textContent=request.getParameter("string");
Byte b[]=textContent.getBytes(“ISO-8859-1”);
textContent=new String(b);
具体例子:见request4.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="" method=post name=form>
<input type="text" name="string">
<input type="submit" value="提交" name="submit">
</form>
<p> 获取文本的信息:
<%
String textContent=request.getParameter("string" );
byte b[]=textContent.getBytes("ISO-8859-1" );
textContent=new String(b);
%>
<br>
<%=textContent%>
<p> 获取按钮的名字:
<%
String buttonName =request.getParameter("submit" );
byte c[]=buttonName.getBytes("ISO-8859-1" );
buttonName=new String(c);
%>
<br>
<%=buttonName%>
</font>
</BODY>
</HTML>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="" method=post name=form>
<input type="text" name="string">
<input type="submit" value="提交" name="submit">
</form>
<p> 获取文本的信息:
<%
String textContent=request.getParameter("string" );
byte b[]=textContent.getBytes("ISO-8859-1" );
textContent=new String(b);
%>
<br>
<%=textContent%>
<p> 获取按钮的名字:
<%
String buttonName =request.getParameter("submit" );
byte c[]=buttonName.getBytes("ISO-8859-1" );
buttonName=new String(c);
%>
<br>
<%=buttonName%>
</font>
</BODY>
</HTML>
Request散列表用户注册实例:
散列表:使用相关关键字查找被存储的数据项的一种数据结构,可以自动变大!关键字不可以有逻辑冲突!
例见request5.jsp,request6.jsp
request5.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="request6.jsp" method=post name=form>
<p> 输入你的姓名:
<input type="text" name="name">
<p> 点击提交按钮:
<input type="submit" value="提交" name="submit">
</form>
</font>
</BODY>
</HTML>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<p><h1>request对象</h1>
<form action="request6.jsp" method=post name=form>
<p> 输入你的姓名:
<input type="text" name="name">
<p> 点击提交按钮:
<input type="submit" value="提交" name="submit">
</form>
</font>
</BODY>
</HTML>
request6.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*"%>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<%!
Hashtable hashtable =new Hashtable();
public void putName(String s)
... {
hashtable.put(s,s);
}
%>
<%
String name=request.getParameter("name" );
if(name==null )
... {
name="";
} //可以避免很多调试的麻烦!!
String textContent=request.getParameter("name" );
byte b[]=name.getBytes("ISO-8859-1" );
name=new String(b);
if(! (hashtable.containsKey(name)))
... {
putName(name);
%>
<p>您已经注册成功!!!!您的名字为------"<%=name%>"
<%
}
else
... {
%>
<p>名字--"<%=name%>"--已存在,请您换一个名字
<%
}
%>
</font>
</BODY>
</HTML>
<%@ page import="java.util.*"%>
<HTML>
<BODY BGCOLOR=cygn background="1148350156370.jpg"><FONT size=4>
<%!
Hashtable hashtable =new Hashtable();
public void putName(String s)
... {
hashtable.put(s,s);
}
%>
<%
String name=request.getParameter("name" );
if(name==null )
... {
name="";
} //可以避免很多调试的麻烦!!
String textContent=request.getParameter("name" );
byte b[]=name.getBytes("ISO-8859-1" );
name=new String(b);
if(! (hashtable.containsKey(name)))
... {
putName(name);
%>
<p>您已经注册成功!!!!您的名字为------"<%=name%>"
<%
}
else
... {
%>
<p>名字--"<%=name%>"--已存在,请您换一个名字
<%
}
%>
</font>
</BODY>
</HTML>
以上完成于:2007.08.01