将数据输入Google Cloud Datastore

时间:2016-12-21 22:50:08

标签: java jsp google-app-engine servlets google-cloud-datastore

我正在尝试创建一个代码,该代码将从html中获取学生信息,并使用java servlet捕获信息并放入Google Cloud Datastore。

我有HTML工作,但每当我尝试运行它时,页面只会刷新并且不会将任何内容放入云数据存储区。

我是servlets的新手,所以我不确定我错过了什么。

以下是jsp文件(即add_student.jsp)

<%@ 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>Insert title here</title>
</head>
<body>


    <a href="add_student">Add Student</a>
    <a href="search_student">Search Student</a>
    <a href="update_student">Update Student</a>
    <a href="delete_student">Delete Student</a>


    <form method="post">
                <p>Student Number       <input name="student_number"    type="number" required /></p>
                <p>First Name           <input name="f_name"            type="text" required/></p>
                <p>Last Name            <input name="l_name"            type="text" required/></p>
                <p>Address (temporary)  <input name="temp_address"          type="text" required/></p>
                <p>Address (permanent)  <input name="perm_address"          type="text" required/></p>
                <p>Home Number          <input name="home_number"       type="number" required/></p>
                <p>Mobile Number        <input name="mobile_number"     type="number" required/></p>
                <p>Date of Birth        <input name="birth_date"        type="date" required/></p>

                <p>Gender           <p>Gender: <br>
                                    <input type="radio" name="gender" value="M" required checked> Male<br>
                                    <input type="radio" name="gender" value="F" required> Female<br>

                <p>Major            <input name="major" type="text" required/></p>
                <p>Course           <input name="course" type="text" required/></p>


                <p>Study Mode       <p>Study Mode: <br>
                                    <input type="radio" name="study_mode" value="full_time" checked> Full-Time<br>
                                    <input type="radio" name="study_mode" value="part_time" required> Part-Time<br>

                <p>Start Date       <input name="start_date"            type="date" required /></p>
                <p>End Date         <input name="end_date"              type="date"  required /></p>

                <p>Add Student      <input name="submitButton"          type="submit" value="addStudent" /></p>
            </form>

</body>
</html>

这是java Servlet文件(即add_studentServlet.java)

package assignment_redo;

import java.io.IOException;
import javax.servlet.http.*;

import com.google.appengine.api.datastore.*;//import the datastore files from google

@SuppressWarnings("serial")
public class add_studentServlet extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        resp.setContentType("text/html");
        String title ="Using the GET Method to Read Form Data!";


                String student_number = req.getParameter("student_number");
                String f_name =req.getParameter("f_name");
                String l_name=req.getParameter("l_name");
                String perm_address = req.getParameter("perm_address");
                String temp_address = req.getParameter("temp_address");
                String home_number = req.getParameter("home_number");
                String mobile_number = req.getParameter("mobile_number");
                String birth_date = req.getParameter("birth_date");
                String gender = req.getParameter("gender");
                String major = req.getParameter("major");
                String course = req.getParameter("course");
                String study_mode = req.getParameter("study_mode");
                String start_date = req.getParameter("start_date");
                String end_date = req.getParameter("end_date");


//              //creating an object of type DatastoreService
                DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

                //creating a new entity of type employee
                Entity student = new Entity("Student", student_number);

                //set its properties
                student.setProperty("f_name", f_name);
                student.setProperty("l_name", l_name);
                student.setProperty("student_number", student_number);
                student.setProperty("temp_address", temp_address);
                student.setProperty("perm_address", perm_address);
                student.setProperty("home_number", home_number);
                student.setProperty("mobile_number", mobile_number);                
                student.setProperty("birth_date", birth_date);
                student.setProperty("gender", gender);              
                student.setProperty("major", major);
                student.setProperty("course", course);
                student.setProperty("study_mode", study_mode);              
                student.setProperty("start_date", start_date);
                student.setProperty("end_date", end_date);

                //insert student entity into Datastore
                datastore.put(student);

                //display success message now
                resp.getWriter().println("Student with id "+student_number+" added to the system!");

    }
}

1 个答案:

答案 0 :(得分:1)

您必须在jsp中指明您正在将表单提交给您的servlet:

<form action="addStudent" method="post">

这假设您在web.xml中已将servlet配置如下:

<servlet>
    <servlet-name>add_studentServlet</servlet-name>
    <servlet-class>assignment_redo.add_studentServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>add_studentServlet</servlet-name>
    <url-pattern>/addStudent</url-pattern>
</servlet-mapping>

然后你必须把你的代码放在你的servlet的doPost中,而不是在doGet中。