Java 谷歌应用引擎-提交表单
我创建了这个servlet方法:Java 谷歌应用引擎-提交表单,java,google-app-engine,jsp,servlets,Java,Google App Engine,Jsp,Servlets,我创建了这个servlet方法: /** * Create the entity and persist it. */ protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { logger.log(Level.INFO, "Creating User!!!"); PrintWriter out =
/**
* Create the entity and persist it.
*/
protected void doPut(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
logger.log(Level.INFO, "Creating User!!!");
PrintWriter out = resp.getWriter();
String email = req.getParameter("email");
String password = req.getParameter("password");
try {
user.insert(email, password);
Log.info("Inserted: " + email + " " + password);
} catch (Exception e) {
String msg = DAOUser.getErrorMessage(e);
out.print(msg);
}
}
并希望通过以下from值插入GAE DB:
<form class="form-horizontal" action="/user" method="put">
<fieldset>
<div class="control-group">
<!-- Text input-->
<label class="control-label" for="input01">Email:</label>
<div class="controls">
<input name="email" placeholder="email" class="input-xlarge" type="text">
<%=request.getParameter("email") %>
</div>
</div>
<div class="control-group">
<!-- Text input-->
<label class="control-label" for="input01">Password:</label>
<div class="controls">
<input name="password" placeholder="password" class="input-xlarge"
type="text">
<%=request.getParameter("email") %>
</div>
</div>
</fieldset>
</form>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a> <a
href="#" class="btn btn-primary" type="submit" value="Submit">Save
Changes</a>
</div>
为什么?
Servlet类gaeTrader2.server.dao.DAOServletUser不是javax.Servlet.Servlet
我的Servlet如下所示:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mortbay.log.Log;
public class DAOServletUser extends HttpServlet {
private static final Logger logger = Logger.getLogger(DAOServletUser.class.getCanonicalName());
/**
* Get the entities in JSON format.
*/
IDAOUser user;
/**
* Create the entity and persist it.
*/
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
logger.log(Level.INFO, "Creating User!!!");
PrintWriter out = resp.getWriter();
String email = req.getParameter("email");
String password = req.getParameter("password");
try {
user.insert(email, password);
Log.info("Inserted: " + email + " " + password);
} catch (Exception e) {
String msg = DAOUser.getErrorMessage(e);
out.print(msg);
}
}
}
我认为您应该在服务器上使用doGet或doPost,在客户端使用相应的dig方法 UPD: web.xml中的servlet描述似乎也不完整:
DAOServletUser
your.package.name.YourServletClass
DAOServletUser
/使用者
我认为您应该在服务器上使用doGet或doPost,在客户端使用相应的方法
UPD:
web.xml中的servlet描述似乎也不完整:
DAOServletUser
your.package.name.YourServletClass
DAOServletUser
/使用者
您的DAOServletUser类应该从HttpServlet扩展。您的DAOServletUser类应该从HttpServlet扩展。您得到了什么错误?我没有收到任何错误消息。。。因此,应用程序的配置肯定是错误的。但是,我真的没有看到错误,请帮助我!你有什么错误?我根本没有收到错误信息。。。因此,应用程序的配置肯定是错误的。但是,我真的没有看到错误,请帮助我!顺便说一句,我将html标记中的method=“post”>
以及servlet方法从名称doPut
更改为名称doPost
。但是我什么也没有得到(firebug中也没有请求…@maximus您确定表单提交了吗?您确定servlet是可访问的吗?你能证实这两件事吗?你绝对是对的。我确信servlet应该是可访问的,因为我在我的web.xml
中使用了与您在上面发布的相同的servlet配置。另一方面,当我按下submitchanges
按钮时,我实际上没有得到响应,而且firebug也没有显示任何POST
请求。你需要一个标签。顺便说一句,我将html标签中的method=“POST”>
以及servlet方法从名称doPut
更改为名称doPost
。但是我什么也没有得到(firebug中也没有请求…@maximus您确定表单提交了吗?您确定servlet是可访问的吗?你能证实这两件事吗?你绝对是对的。我确信servlet应该是可访问的,因为我在我的web.xml
中使用了与您在上面发布的相同的servlet配置。另一方面,当我按下submitchanges
按钮时,我实际上没有得到响应,而且firebug也没有显示POST
请求。您需要在标记中添加一个标记。您使用的是doPost而不是doPut?gaeTrader2.server.dao.daoservlet用户不是javax.servlet.servlet用户?您正在使用javex.servlet.HttpServlet导入?DAOServletUser是我的servlet。然而,当我在eclipse中导入我需要的类时,我得到:import javax.servlet.ServletException;导入javax.servlet.http.HttpServlet;导入javax.servlet.http.HttpServletRequest;导入javax.servlet.http.HttpServletResponse;导入org.mortbay.log.log代码>这些类是否错误?导入是否正确。顺便说一句,表单中的提交按钮在哪里?让我们看看,您使用的是doPost而不是doPut?gaeTrader2.server.dao.DAOServletUser不是javax.servlet.servlet用户?您正在使用javex.servlet.HttpServlet导入?DAOServletUser是我的servlet。然而,当我在eclipse中导入我需要的类时,我得到:import javax.servlet.ServletException;导入javax.servlet.http.HttpServlet;导入javax.servlet.http.HttpServletRequest;导入javax.servlet.http.HttpServletResponse;导入org.mortbay.log.log代码>这些类是否错误?导入是否正确。顺便说一句,在您的表单中提交按钮在哪里?让我们看看
Mär 22, 2013 6:46:07 AM com.google.appengine.tools.development.ApiProxyLocalImpl log
SEVERE: javax.servlet.ServletContext log: unavailable
javax.servlet.UnavailableException: Servlet class gaeTrader2.server.dao.DAOServletUser is not a javax.servlet.Servlet
at org.mortbay.jetty.servlet.ServletHolder.checkServletType(ServletHolder.java:362)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:243)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:228)
at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:255)
at com.google.appengine.tools.development.AbstractServer.startup(AbstractServer.java:79)
at com.google.appengine.tools.development.DevAppServerImpl$Servers.startup(DevAppServerImpl.java:451)
at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:198)
at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97)
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1093)
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:836)
at com.google.gwt.dev.DevMode.main(DevMode.java:311)
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mortbay.log.Log;
public class DAOServletUser extends HttpServlet {
private static final Logger logger = Logger.getLogger(DAOServletUser.class.getCanonicalName());
/**
* Get the entities in JSON format.
*/
IDAOUser user;
/**
* Create the entity and persist it.
*/
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
logger.log(Level.INFO, "Creating User!!!");
PrintWriter out = resp.getWriter();
String email = req.getParameter("email");
String password = req.getParameter("password");
try {
user.insert(email, password);
Log.info("Inserted: " + email + " " + password);
} catch (Exception e) {
String msg = DAOUser.getErrorMessage(e);
out.print(msg);
}
}
}
<servlet>
<servlet-name>DAOServletUser</servlet-name>
<servlet-class>your.package.name.YourServletClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DAOServletUser</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>