当我在动态下拉列表中使用onchange="this.form.submit()"
方法时,依赖于另一个
整个表格是提交做什么给我一些建议
当我删除表单操作时,它只能下拉但是如何从表单中获取数据到数据库
register.jsp
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Register to House in Rent India</title>
<link rel="stylesheet" type="text/css" href="styleraika.css">
</head>
<body>
<div class="ctn">
<form action="register" method="post" id="rg" name="rg">
<div class="register_label">State</div>
<select class="register_text" name="stat" id="stat" onchange="this.form.submit()">
<option value="">Select State</option>
<%
try
{
String sql="select * from state";
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/raika","root","mysql");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
%>
<option value="<%=rs.getInt("sid")%>"
<%
if(request.getParameter("stat")!=null)
{
if(rs.getInt("sid") == Integer.parseInt(request.getParameter("stat")))
{
out.print("selected");
}
}
%>
><%=rs.getString("state")%></option>
<%
}
}
catch(SQLException e)
{
e.printStackTrace();
}
%>
</select>
<div class="register_label">District</div>
<select class="register_text" name="dist" id="dist">
<option value="">Select District</option>
<%
String n=request.getParameter("stat");
try
{
String sql="select * from dist where sid=?";
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/raika","root","mysql");
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1, n);
ResultSet rs=ps.executeQuery();
while(rs.next())
{
%>
<option value="<%=rs.getString(1)%>"><%=rs.getString(2)%></option>
<%
}
}
catch(SQLException e)
{
e.printStackTrace();
}
%>
</select>
<div class="register_label">Local Area</div>
<input type="text" class="register_text" name="local" id="local">
<center>
<input type="submit" value="Register" class="reg_btm">
<input type="button" value="Reset" class="reg_btm" onclick="reset()">
</center>
</form>
</div>
<script>
function reset() {
document.getElementById("rg").reset();
}
</script>
</body>
</html>
Servlet代码
package demo;
import java.io.IOException;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
/**
* Servlet implementation class Register
*/
@WebServlet("/register")
public class Register extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Register() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String local=request.getParameter("local");
int s=Integer.parseInt(request.getParameter("stat"));
String dist=request.getParameter("dist");
String state1=request.getParameter("stat");
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","mysql");
String sql="INSERT INTO location (state,dist,local) VALUES (?,?,?);";
PreparedStatement ps=(PreparedStatement) con.prepareStatement(sql);
ps.setString(1, state1);
ps.setString(2, dist);
ps.setString(3, local);
ps.executeUpdate();
ps.close();
String sql2="INSERT INTO local (did, local) VALUES (?,?);";
PreparedStatement ps2=(PreparedStatement) con.prepareStatement(sql2);
ps2.setInt(1, s);
ps2.setString(2, local);
ps2.executeUpdate();
//pw.println("Data Inserted successfully..........");
response.sendRedirect("success.jsp");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost1(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
private void processRequest(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
}
@Override
public String getServletInfo() {
return "Short description";
}
}
答案 0 :(得分:0)
你应该这样做:
<form action="register" method="post">
<select class="register_text" name="stat" id="stat">
/** skipping your java code **/
<option value="Desired_Value_Here"> </option>
</select>
<select class="register_text" name="dist" id="dist">
<option value="Desired_Value_Here"> </option>
</select>
<input type="submit" value="" class="" />
</form>
您不需要 onChange 事件,当您按下提交按钮时,此表单将被提交并将命中您的servlet。您将在servlet中执行的操作是:
String yourStat = request.getParameter("stat");
//for getting selected value from the first select tag
String yourDist = request.getParameter("dist");
//for getting selected value from the second select tag
这就是你需要做的一切。
我建议您将JavaScript放在外部(单独的.js文件)中,并使用表达式语言,以便您的代码可读。