【问题标题】:Inputing data into Google Cloud Datastore将数据输入 Google Cloud Datastore
【发布时间】:2017-05-07 11:52:07
【问题描述】:

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

我的 HTML 可以正常工作,但每当我尝试运行它时,页面只会刷新,不会将任何内容放入云数据存储中。

我是 servlet 的新手,所以我不确定我缺少什么。

下面是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!");

    }
}

【问题讨论】:

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


    【解决方案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中。

    【讨论】:

    • PS:您应该看看 Objectify,这是一个用于 Datastore 的 Java 数据访问 API。它使事情变得更容易。 github.com/objectify/objectify
    猜你喜欢
    • 2019-06-25
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2020-05-05
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多