JSP-实验:表单传值-提交表单并传递、获取数据

2 篇文章 0 订阅
2 篇文章 0 订阅

JSP-实验:表单传值-提交表单并传递、获取数据

说明: 参考链接在最后1

我这个版本运行过,反正没大问题,但是用参考的那个网页上的内容,就会出错……原因也写在后面了。

实验

实验内容:

利用表单传递数据,此题目包含01.html、01.jsp、02.jsp、03.jsp、04.jsp共五个程序。
以下图1-5分别是这5个程序运行后的截图。编写程序代码实现截图效果。

下载地址(实验内容/源代码):

01.html
01.jsp
02.jsp
03.jsp
04.jsp

相关知识

jsp表单form传值

页面间链接和数据传递的三种方式:

(1)通过form将数据提交到下一个页面;

(2)通过链接将数据提交到下一个页面;

(3)通过Session将数据提交到后续页面。

session是一次会话只要浏览器不关闭就不会关闭会话,一般默认保存30分钟可以根据自己的需要更改。(关于如何更改,暂时没有涉及)

源代码

参考链接1

参考链接的代码有部分无法运行,重新修改了。

【备注】只粘贴部分代码,源代码自己下载吧。

01.html

<h2>利用表单传递数据</h2>

<form name="form1" method="post" action="02.jsp">
	<p>你的姓名:
		<input type="text" name="name">
		</p>
	<p>你的爱好:
		<input type="text" name="hobby">
		</p>
	<p>你所从事的行业:
		<select name="work">
		<option></option> <!--默认为空,从下拉菜单中选择-->
		<option value="学生">学生</option>
		<option value="IT业">IT业</option>
		<option value="商业">商业</option>
		<option value="制造业">制造业</option>
		<option value="服务业">服务业</option>
		</select>
	</p>
	<p>
	<input type="Submit" value="提交">
	<input type="Reset" value="重置">
	</p>
</form>

02.jsp

<p>
<%
	//从表单中获取数据

	String name=new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8");
	String hobby=new String(request.getParameter("hobby").getBytes("iso-8859-1"), "utf-8");
	String work=new String(request.getParameter("work").getBytes("iso-8859-1"), "utf-8");
	%>

<%	
	//验证"名字(name)"的长度是否符合要求
	if(name.length()<2||name.length()>8)
		out.println("你输入的名字长度不符合要求");
	else{ 
		out.println("你的姓名是:"+name+"<br>");
		out.println("你的爱好是:"+hobby+"<br>");
		out.println("你所从事的工作是:"+work+"<br>");

	//将"名字(name)"保存到session对象中,让后续页面(下个页面、下下个页面、……)引用
		session.setAttribute("name",name);
   }
%>
<br>
<!--将"爱好(hobby)"和"工作(work)"以链接的形式传递给下个页面-->
<a href="03.jsp?hobby=<%=hobby%>&work=<%=work%>">提交</a>
</p>
<hr>
<p><font size="2">*将"名字(name)"保存到session对象中,让后续页面(下个页面、下下个页面、……)引用</font></p>
<p><font size="2">*将"爱好(hobby)"和"工作(work)"以链接的形式传递给下个页面</font></p>

03.jsp

<body>
<p>从session对象中获取"名字(name)"的值;<br>从链接中获取"爱好(hobby)"和"工作(work)"</p>

<SCRIPT language="JavaScript">
     function submit1()
	{
    	 document.forms["form1"].action="04.jsp";
    	 document.form1.submit();
    	 }

     function edit1()
     {
		document.forms["form1"].action="01.jsp";
		document.form1.submit();
		}
</SCRIPT>

<body>
<h3>从session对象中获取"名字(name)"的值;从链接中获取"爱好(hobby)"和"工作(work)"</h3>

<%
	String name=(String)session.getAttribute("name");
	String hobby=request.getParameter("hobby");
	String work= request.getParameter("work");

	out.println("你的姓名是:"+name+"<br>");
	out.println("你的爱好是:"+hobby+"<br>");
	out.println("你所从事的工作是:"+work+"<br>");

   //将"爱好(hobby)"和"工作(work)"保存在session对象中
   session.setAttribute("hobby",hobby);
   session.setAttribute("work",work);
%>

<form name="form1" method="post"> 
	<input type="hidden" name="name" value="<%=name%>"> 
	<input type="hidden" name="hobby" value="<%=hobby%>"> 
	<input type="hidden" name="work" value="<%=work%>"> 
	<p><h3>确认提交这些信息吗?</h3></p> 
	<input type="Button" name="Submit" value="确认" onClick="javascript:submit1()"> 
	<input type="Button" name="Edit" value="修改" onClick="javascript:edit1()"> 
</form> 
<hr>
<p><font size="2">*将"爱好(hobby)"和"工作(work)"保存在session对象中,让后续页面(下个页面、下下个页面、……)引用</font></p>
<p><font size="2">*由于"名字(name)"在上个页面中已经保存在session对象中了,这里没必要再次保存</font></p>
</body>

04.jsp

<%
   //从sessoin对象中获取数据
	String name=(String)session.getAttribute("name");
	String work=(String)session.getAttribute("work");
	String hobby=(String)session.getAttribute("hobby");
%>

<p>
<font color="#0000FF"><%=name%></font>,你好!你所从事的工作是<font color="#0000FF"><%=work%></font>,在业余时间喜欢<font color="#0000FF"><%=hobby%></font>。
</p>

01.jsp

<title>利用表单传递数据</title>
</head>

<%  
   String name=new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8");  
   String hobby=new String(request.getParameter("hobby").getBytes("iso-8859-1"), "utf-8");  
   String work=new String(request.getParameter("work").getBytes("iso-8859-1"), "utf-8");  
%> 

<body>

<h3>利用表单传递数据</h3> 
<form name="form1" method="post" action="02.jsp"> 
<p>你的姓名:  
     <input type="text" name="name" value="<%=name%>"> 
</p> 
<p>你的爱好:  
     <input type="text" name="hobby" value="<%=hobby%>"> 
</p> 
<p>你所从事的行业:  
     <select name="work"> 
          <%if(work.equals("学生")){%> 
        <option value="学生" selected>学生</option> 
        <option value="IT业">IT业</option> 
        <option value="商业">商业</option> 
        <option value="制造业">制造业</option> 
        <option value="服务业">服务业</option> 
          <%}else if(work.equals("IT业")){%> 
        <option value="学生">学生</option> 
        <option value="IT业" selected>IT业</option> 
        <option value="商业">商业</option> 
        <option value="制造业">制造业</option> 
        <option value="服务业">服务业</option> 
          <%}else if(work.equals("商业")){%> 
        <option value="学生">学生</option> 
        <option value="IT业">IT业</option> 
        <option value="商业" selected>商业</option> 
        <option value="制造业">制造业</option> 
        <option value="服务业">服务业</option> 
          <%}else if(work.equals("制造业")){%> 
        <option value="学生">学生</option> 
        <option value="IT业">IT业</option> 
        <option value="商业">商业</option> 
       <option value="制造业" selected>制造业</option> 
        <option value="服务业">服务业</option> 
              <%}else if(work.equals("服务业")){%> 
        <option value="学生">学生</option> 
       <option value="IT业">IT业</option> 
        <option value="商业">商业</option> 
        <option value="制造业">制造业</option> 
        <option value="服务业" selected>服务业</option> 
              <%}%> 
     </select> 
</p> 
<p> 
     <input type="Submit" value="提交"> 
     <input type="Reset" value="重置"> 
</p> 
</form> 

</body>

遇到的问题

  • 在Eclipse无法运行,然而在浏览器上可以运行,完全没出错……
    • 直接在Eclipse运行之后,复制一下网址再实验吧……
    • 具体就是第一个页面还可以,第二个也没问题
    • 到了第3个页面就出错了
      • 报错内容:
    HTTP Status 400 – Bad Request
Type Exception Report

Message Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

Description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

Exception
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
	org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:467)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:294)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.lang.Thread.run(Unknown Source)

Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/9.0.11

预览效果

01 html:

img

02 jsp:

img

03 jsp:

img

04 jsp:

img

01 jsp:

返回03,点击“修改”,跳转到01.jsp。图和01.html的一样。


既然看到了最后,那就直接给个压缩包吧,可以直接点击下载源代码:

源代码

备注:修改了一次,问题不大,然后也就没有重新上传源文件了。


//end


其他说明可以点击 简 介 说 明 查看。
转载请联系作者。

【赞赏&支持&福利】

感谢!
│  支持&福利(+每日领红包)  │  备用链


  1. jsp 表单传值 - jzz111的专栏 - CSDN博客
    浅谈JSP表单中的form传值 - 轻锋的专栏 - CSDN博客 ↩︎ ↩︎

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值