0 0

JSP表单提交给servlet,获取表单数据0

在一个JSP表单内有单选框、复选框、输入框等,在servlet获取值,怎么办?

以下的JSP文件大概意思概括如下:从数据库取出所有数据放入Iterator,然后根据每一条数据的类型显示为单选、多选、单选+输入、多选+输入、填空、多行输入。每一个题目的name设为它在数据库的ID。

jsp如下:
<!-- 
   显示问卷内的题目
	 -->

		<hr />
		<%
			while (it.hasNext()) {

				Questions questions = (Questions) it.next();
		%>

		<br /><%=questions.getQ_id()%>&nbsp;
		<%=questions.getQ_head()%><br />
		<%
			String body = questions.getQ_body();
				Vector<String> vector = ParseString.ParseStr(body);//把题目的内容根据换行符分割
				String qType = questions.getQ_type().getQt_des();
				if (qType.endsWith("单选")) {//若果是单选就依次显示单选选项
					for (int i = 0; i < vector.size(); i++) {
		%>
               <!--把题目编号作为name传过去  -->
		<input type="radio" name="<%=questions.getQ_id()%>" value="<%=i%>" /><%=vector.get(i)%><br />
		<%
			}
				} else if (qType.endsWith("多选")) {
for(int i=0;i<vector.size();i++){
	%>
	<input type="checkbox" name="<%=questions.getQ_id()%>" value="<%=i%>" /><%=vector.get(i)%><br />
	<%
}
				}
				else if (qType.endsWith("单选+输入")) {
					for(int i=0;i<vector.size()-1;i++){
						%>
						<input type="radio" name="<%=questions.getQ_id()%>" value="<%=i%>" /><%=vector.get(i)%><br />
						<%
					}
					%>
					<%=vector.get(vector.size()-1)%><br/>
					<textarea rows="2" cols="20" name="single_in" ></textarea><br />
					<%
									}
				else if (qType.endsWith("多选+输入")) {
										for(int i=0;i<vector.size()-1;i++){
											%>
											<input type="checkbox" name="<%=questions.getQ_id()%>" value="<%=i%>" /><%=vector.get(i)%><br />
											<%
										}
										%>
										<%=vector.get(vector.size()-1)%><br/>
										<textarea rows="2" cols="30" name="chect_in" ></textarea><br />
										<%
														}
				else if (qType.endsWith("填空")) {
					
					%>
					<%=body%><br />请填写答案:<input type="text" name="<%=questions.getQ_id()%>"/><br />
					<%
									}
else if (qType.endsWith("多行输入")) {
					
					%>
					<%=body%><br />请填写答案:<textarea rows="5" cols="30" name="<%=questions.getQ_id()%>" ></textarea><br />
					<%
									}
				
		%>

servlet文件要获取JSP的数据,但是因为若果题目类型是单选,值只有一个;若是多选,值有多个。一个一个获得很麻烦,所以我就定义一个二维数组,str[i][j],i表示该题目的ID,j表示它的值。无论是单选还是多选都可以。servlet文件如下:
int s_id=Integer.parseInt(request.getParameter("s_id"));//获得问卷ID
		QuestionsDao qDao = new QuestionsDaoImpl();
		AnswerSheetDao aDao= new AnswerSheetDaoImpl();
		ArrayList<Questions> list = (ArrayList<Questions>) aDao
				.findAllQueBySurId(s_id);//查询到问卷ID为s_id的所有题目
		int count=aDao.CountQueBySurId(s_id);//获得该问卷内题目的个数
		//System.out.println(count+"*******count");
		for (int i = 0; i < list.size(); i++) {
			int qID = list.get(i).getQ_id();// 获得题目ID
			int number = list.get(i).getQ_number();// 获得题目选项个数
			String q_id = String.valueOf(qID);// 把ID转换成字符串
			String[][] str = new String[count][];// 定义二维数组,因为复选框的值是多个,所以用request.getParameterValues()
			try { // 这样的话,str[i][j],i表示当前的题目的ID,j就表示题目的value。
				str[qID] = request.getParameterValues(q_id);
				
			} catch (Exception e) {
				System.out.println("request.getParameter()出错");
				e.printStackTrace();
			}
			

		}

	}

问题出来啦:
request.getParameter()出错
java.lang.ArrayIndexOutOfBoundsException: 1
	at com.answerSheetServlet.AddAnswerSheetServlet.doPost(AddAnswerSheetServlet.java:46)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.util.ChinaFilter.doFilter(ChinaFilter.java:16)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
	at java.lang.Thread.run(Thread.java:619)
JSP 
2013年8月21日 10:32

1个答案 按时间排序 按投票排序

1 0

采纳的答案

String[][] str = new String[count][];// 定义二维数组,因为复选框的值是多个,所以用request.getParameterValues()  
            try { // 这样的话,str[i][j],i表示当前的题目的ID,j就表示题目的value。  
                str[qID] = request.getParameterValues(q_id);  
                  
            } catch (Exception e) {  
                System.out.println("request.getParameter()出错");  
                e.printStackTrace();  
            }  



这里的面count是总个数,而qID却是主键ID,两个不搭边啊。有可能qid是10,而总个数却是3, 这样数组肯定越界了

感觉楼主可以这样定义数据结构

Map<String,Object> str = new HashMap<String, Object>();
str的key存放qid,value存放题目的value

2013年8月21日 10:54

相关推荐

    servlet接收form表单提交的数据

    本篇将详细介绍如何使用Servlet来接收form表单提交的数据,并将其在网页上呈现。 一、Servlet生命周期 Servlet具有三个主要阶段:加载、初始化和服务。当客户端首次请求Servlet时,服务器会加载并初始化Servlet,...

    servlet获取表单数据详解(十分全)

    在Servlet中,获取客户端通过HTML表单提交的数据是一项基本任务,这通常涉及到处理HTTP请求的`HttpServletRequest`对象。客户端的所有信息,包括请求的URL、参数、数据、上传的文件以及客户端的IP和操作系统等,都会...

    十分全的servlet获取表单数据

    在这个主题“十分全的servlet获取表单数据”中,我们将深入探讨如何利用Servlet来处理客户端提交的表单信息,这包括各种输入控件如文本框、密码框、选择框、单选框、复选框以及文本域的数据获取。 1. **表单基础** ...

    jsp+servlet做的form表单元素的提交

    在Web开发领域,JavaServer ...通过JSP创建表单,Servlet处理表单提交,然后将处理结果返回给用户。这种模式是Web开发中的基础,也是许多复杂应用的基石。了解并熟练掌握这一流程,对任何Java Web开发者都至关重要。

    对于JSP中表单数据存储的一种通用方法

    1. 对每个表单单独编写代码:这种方法要求在JSP、JavaBean或Servlet中使用`request.getParameter()`获取表单提交的数据。然后,手动创建SQL语句(如INSERT、UPDATE、DELETE),并调用`executeUpdate()`方法执行。...

    [JSP暑假实训] 二.JSP网站创建及Servlet实现注册表单提交、计算器运算1

    【JSP暑假实训】二.JSP网站创建及Servlet实现注册表单提交、计算器运算 一.JSP网站创建 在MyEclipse环境下创建JSP网站,首先需要创建一个Web Project,这里以“test0630_web”为例。工程创建完成后,会自动生成...

    jsp+servlet+from表单提交,上传头像,写入服务器

    本教程将聚焦于"jsp+servlet+from表单提交,上传头像,写入服务器"这一主题,非常适合初学者理解并掌握Web开发中的文件上传功能。 首先,我们需要了解基础概念。JSP(JavaServer Pages)是Java平台上的一个动态网页...

    jsp中在提交表单时的中文处理问题

    在JSP(Java Server Pages)中处理中文字符时,特别是在用户通过表单提交数据时,可能会遇到各种编码问题。这是因为Web应用中涉及到多种编码格式,包括浏览器编码、HTTP请求编码、服务器编码等,如果这些编码不一致...

    JSP+JavaBean+Servlet网上书店

    在这个网上书店应用中,JSP主要负责展示用户界面,如图书列表、用户登录表单、购物车页面等。通过JSP,开发者可以轻松地创建交互式和响应式的用户界面,提高用户体验。 **JavaBean** JavaBean是Java编程中的一个...

    jsp表单和图片一起上传

    综上所述,"jsp表单和图片一起上传"涉及的主要知识点包括:JSP表单设计,Servlet处理POST请求,多部分数据解析(Apache Commons FileUpload库),文件保存到服务器,以及表单字段的提取和处理。这些技术是构建一个...

    使用JSP、JavaBean和Servlet实现一个简单的留言板设计.zip

    用户通过JSP页面提交表单,同时,服务器端的JSP也可以用来处理用户的请求,如验证输入数据或调用JavaBean进行业务逻辑处理。 2. **JavaBean**:JavaBean是符合JavaBeans规范的Java类,通常用于封装业务逻辑和数据。...

    Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例

    在Servlet中,我们可以使用request.getParameter()方法来获取表单提交的数据。这种方法简单易用,但是在处理表单数据时需要注意参数的编码问题。 方式二:使用 request.getParameterValues() 方法 如果表单中有多...

    jsp与JavaScript提交至servlet的几种方式

    本文将深入探讨如何使用JSP和JavaScript向Servlet提交数据的多种方法,以帮助开发者更好地理解这一过程。 首先,我们了解基本概念: 1. JSP:是一种服务器端的脚本语言,允许在HTML中嵌入Java代码,主要用于生成...

    jsp+servlet实现简单的登录注册

    而"CeShi"可能是项目的源代码文件夹,包含JSP文件(如login.jsp、register.jsp)、Servlet文件(如LoginServlet.java、RegisterServlet.java)和其他辅助类。JSP文件通常负责展示界面,Servlet文件则负责处理后台...

    jsp+JavaBean+Servlet+MySQL宿舍管理系统(初学者)

    这些数据通过HTML表单提交,然后被发送到服务器。 "Servlet的调用方法处理数据"说明了Servlet的角色。在Web应用中,Servlet通常接收来自客户端的HTTP请求,进行业务逻辑处理,比如验证用户输入、处理数据、更新...

    jsp实验报告4-servlet.zip

    在本实验中,我们编写了一个Servlet来接收JSP表单提交的数据。Servlet通过重写`doPost`或`doGet`方法来响应HTTP POST或GET请求。当用户提交表单时,Servlet会接收到字符串,然后使用`split()`方法将其分拆为一个整数...

    JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能( 源码打包)

    当用户提交表单时,JSP页面会调用相应的Servlet进行业务逻辑处理。 Servlet是Java平台上的CGI(通用网关接口)替代品,它负责处理HTTP请求,并生成HTTP响应。在用户注册和登录系统中,Servlet扮演了核心的控制角色...

    servlet读取数据库代码到jsp页面表格示例

    在本例中,Servlet负责与数据库交互,获取数据并传递给JSP页面。 2. **JSP (JavaServer Pages)**: JSP是动态网页技术,用于创建HTML或XML等格式的响应。它将业务逻辑和表现层分开,使开发者能够更专注于页面设计。...

    JSP+Servlet实现简易购物车功能

    在这个购物车项目中,JSP主要负责展示用户界面,如商品列表、购物车详情等,以及处理用户的表单提交。 2. **Servlet**:Servlet是Java EE中的一个核心组件,它是运行在服务器端的Java程序,用于处理HTTP请求并生成...

Global site tag (gtag.js) - Google Analytics