Javascript 从属性文件ajax mvc获取处理程序
我正在尝试使用ajax验证我的数据库中是否有任何类似的电子邮件输入。我使用的mvc模式没有任何框架。正如您所看到的,我的控制器是一个servlet,它读取名称并使用属性文件进行验证,然后为每个事件调用特定的处理程序。它向我显示了一个错误,因为url导致事件始终为空参数位于ajaxxmlhttp.open 属性文件Javascript 从属性文件ajax mvc获取处理程序,javascript,ajax,jsp,servlets,model-view-controller,Javascript,Ajax,Jsp,Servlets,Model View Controller,我正在尝试使用ajax验证我的数据库中是否有任何类似的电子邮件输入。我使用的mvc模式没有任何框架。正如您所看到的,我的控制器是一个servlet,它读取名称并使用属性文件进行验证,然后为每个事件调用特定的处理程序。它向我显示了一个错误,因为url导致事件始终为空参数位于ajaxxmlhttp.open 属性文件 SIGNUP = events.SignUpEventHandler AJAX= events.EventAjaxMail 控制器 package controlle
SIGNUP = events.SignUpEventHandler
AJAX= events.EventAjaxMail
控制器
package controller;
import events.EventHandlerBase;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.ResourceBundle;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Controller extends HttpServlet {
protected HashMap events= new HashMap();
public void init() throws ServletException{
// get the event values and save them into events
ResourceBundle bundle = ResourceBundle.getBundle("Event");
Enumeration e = bundle.getKeys();
while(e.hasMoreElements()) {
String key = (String) e.nextElement();
String value = bundle.getString(key);
try {
EventHandlerBase event =
(EventHandlerBase) Class.forName(value).newInstance();
events.put(key, event);
System.out.println(this + "init event"+key+ "Handler: "+ event.getClass().getName());
} catch(Exception exc) {
System.out.println("NO HANDLER FOUND!");
exc.printStackTrace();
}
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//get session if the server sent one to the browser
HttpSession session = request.getSession(false);
//case that no session found, start new
if (session == null) {
session = request.getSession();
}
String event = validateEvent(request);
EventHandlerBase handler = getEventHandler(event);
try {
handler.process(session, request, response);
} catch (Exception e) {
e.printStackTrace();
//handler = getEventHandler("UNKNOWN_EVENT");
}
handler.forward(request, response);
}
protected String validateEvent(HttpServletRequest request) {
String event = request.getParameter("event");
System.out.println("\n\nevent= "+event);
if (event == null || !events.containsKey(event)) {
//event = Events.UNKNOWN.toString();
System.out.println("UNKNOWN_EVENT EGINE");
event="UNKNOWN_EVENT";
}
return event;
}
protected EventHandlerBase getEventHandler(String e) {
EventHandlerBase h;
try {
h = (EventHandlerBase) events.get(e);
} catch(Exception exc) {
h = (EventHandlerBase)events.get("UNKNOWN_EVENT");
}
//System.out.println("to h sto getEventHandler: "+ h.getClass().getName());
return h;
}
}
JSP、AJAX和JAVASCRIPT
<form class="form-horizontal" id="signup_form" action="controller_servl" method="post">
<div class="form-group">
<label for="registeremail" class="col-sm-2 control-label">Email</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="registeremail" name="email_n" placeholder="someone@hotmail.com" onchange="getStates(this.value)" required>
</div>
<div class="" id="message"></div>
</div>
</form>
<script>
function getStates(registeremail)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
else
{
var url="controller_servl?value=LOGIN®isteremail="+registeremail;
//creating callback method.here countrychanged is callback method
xmlHttp.onreadystatechange=countryChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
}
</script>
在该url中,我需要一个name=event和value=AJAX,以便控制器能够处理该事件
更新
我已经编辑了如下所示的网址,这是有效的。这是正确的解决方案吗?在何处以及如何调用GetState?