接收表单

index.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <FORM METHOD=POST ACTION="common.jsp">
              请输入:<INPUT TYPE="text" NAME="name"><INPUT TYPE="submit" VALUE="提交">
       </FORM>
       </BODY>
</HTML>

 

common.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <%
              request.setCharacterEncoding("gb2312");
              String name = request.getParameter("name");
       %>
       您输入的是:<FONT COLOR="RED"><%=name%></FONT>
       </BODY>
</HTML>

 

文本框和密码框都是将控件里的数据作为字符串传入服务器,某些时候需要转换其类型,例如:

 

index.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <H3>计算两数之和</H3>
       <FORM METHOD=POST ACTION="common.jsp">
              数1:<INPUT TYPE="text" NAME="num1"><BR>
              数2:<INPUT TYPE="text" NAME="num2"><BR>
                   <INPUT TYPE="submit" VALUE="加法">
       </FORM>
       </BODY>
</HTML>

 

common.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <%
              request.setCharacterEncoding("gb2312");
              String num1 = request.getParameter("num1");
              String num2 = request.getParameter("num2");
 
              int i = 0 ;
              int j = 0 ;
              try
              {
                     i = Integer.parseInt(num1) ;
                     j = Integer.parseInt(num2) ;
       %>
              两数之和是:<FONT COLOR="RED"><%=(i+j)%></FONT>
       <%
              }
              catch(Exception e)
              {
       %>
                     Input Error!!!
       <%
              }
       %>
       </BODY>
</HTML>

 

如果传递的参数有中文字符,则需要用request.setCharacterEncoding("gb2312");用以消除中文显示乱码隐患。

我们再看看表单中其它比较复杂的控件。

 

index.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <H3>请选择</H3>
       <FORM METHOD=POST ACTION="common.jsp">
              <INPUT TYPE="checkbox" NAME="like" VALUE="篮球">篮球
              <INPUT TYPE="checkbox" NAME="like" VALUE="足球">足球
              <INPUT TYPE="checkbox" NAME="like" VALUE="游泳">游泳
              <INPUT TYPE="checkbox" NAME="like" VALUE="击剑">击剑
              <INPUT TYPE="checkbox" NAME="like" VALUE="摔跤">摔跤<BR>
              <INPUT TYPE="submit" VALUE="提交">
       </FORM>
       </BODY>
</HTML>

 

common.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <%
              request.setCharacterEncoding("gb2312") ;
              String like[] = request.getParameterValues("like") ;
       %>
       <H2>兴趣为:</H2>
       <%
              if(like!=null){
                     for(int i=0;i<like.length;i++)
                     {
       %>
                            <%=like[i]%>、
       <%
                     }
              }
       %>
       </BODY>
</HTML>

 

上例给出了接收复选框数据的方法,但是要注意当一个都不选时的空指针异常的出现。

request.getParameter()方法还可以接收隐藏表单和URL后面传过来的参数,看下面的例子:

 

index.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <FORM METHOD=POST ACTION="common.jsp">
              密码:<INPUT TYPE="password" NAME="password">
              <INPUT TYPE="hidden" NAME="name" VALUE="aaa"><BR>
              <INPUT TYPE="submit" VALUE="提交"><BR>
              <A HREF="common.jsp?password=111&name=aaa">提交</A>
       </FORM>
       </BODY>
</HTML>

 

common.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <%
              request.setCharacterEncoding("gb2312") ;
              String password = request.getParameter("password") ;
              String name = request.getParameter("name") ;
       %>
       <h1>内容为:<%=password%></h1>
       <h1>内容为:<%=name%></h1>
       </BODY>
</HTML>

 

最后,我们看一个下拉列表的例子:

 

index.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <FORM METHOD=POST ACTION="common.jsp">
              <SELECT NAME="city">
                     <OPTION VALUE="武汉">武汉</OPTION>
                     <OPTION VALUE="上海">上海</OPTION>
                     <OPTION VALUE="北京">北京</OPTION>
                     <OPTION VALUE="天津">天津</OPTION>
                     <OPTION VALUE="重庆">重庆</OPTION>
              </SELECT>
              <INPUT TYPE="submit" VALUE="提交">
       </FORM>
       </BODY>
</HTML>

 

common.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <%
              request.setCharacterEncoding("gb2312") ;
              String city = request.getParameter("city") ;
       %>
       <h1>城市:<%=city%></h1>
       </BODY>
</HTML>

保存及获取属性

index.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <%
              request.setAttribute("name","aaa") ;
              request.setAttribute("password","111") ;
       %>
       <jsp:forward page="common.jsp"/>
       </BODY>
</HTML>

 

common.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>request对象</TITLE>
       </HEAD>
       <BODY>
       <H2>这里是common.jsp</H2>
       <%
              String name = (String)request.getAttribute("name") ;
              String password = (String)request.getAttribute("password") ;
       %>
       <h1>name : <%=name%></h1>
       <h1>password : <%=password%></h1>
       </BODY>
</HTML>

 

这个例子会成功的取得保存在request对象里的属性值。如果我们将<jsp:forward page="common.jsp"/>去掉,改由response.sendRedirect("common.jsp");来跳转,或者由<A HREF="common.jsp">转向</A>这个超链接来转向,都是无法取得request对象中的属性值的。

登录范例

index.jsp:


<%@page contentType="text/html;charset=gb2312"%>

<HTML>

       <HEAD>

              <TITLE>登录范例</TITLE>

       </HEAD>

       <BODY>

       <FORM METHOD=POST ACTION="login.jsp">

              帐号:<INPUT TYPE="name" NAME="name"><BR>

              密码:<INPUT TYPE="password" NAME="password"><BR>

              <INPUT TYPE="submit" VALUE="登录">

       </FORM>

       </BODY>

</HTML>

 

login.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>登录范例</TITLE>
       </HEAD>
       <BODY>
       <%
              request.setCharacterEncoding("gb2312");
              String name = request.getParameter("name");
              String password = request.getParameter("password");
              if("aaa".equals(name)&&"111".equals(password))              
              {
       %>
                     <jsp:forward page="success.jsp"/>
       <%
              }
              else
              {
       %>
                     <jsp:forward page="failure.jsp"/>
       <%
              }
 
       %>
       </BODY>
</HTML>

 

success.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>登录成功</TITLE>
       </HEAD>
       <BODY>
       <H2>欢迎<%=request.getParameter("name")%>登录</H2>
       </BODY>
</HTML>

 

failure.jsp:

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>登录失败</TITLE>
       </HEAD>
       <BODY>
       <H2>登录失败</H2>
       </BODY>
</HTML>

获得客户端IP

<%@page contentType="text/html;charset=gb2312"%>
<HTML>
       <HEAD>
              <TITLE>登录范例</TITLE>
       </HEAD>
       <BODY>
       您的IP地址:<FONT COLOR="RED"><%=request.getRemoteAddr()%></FONT>
       </BODY>
</HTML>