Javascript REST服务未注册表单数据
我正在设计一个REST服务,允许学生登录并注册到一个网站,该网站将列出他们可以使用的课程,但我坚持让学生登录或注册。下面是我尝试甚至在firebug中获取控制台以检索学生时的标题响应。当我尝试注册时,我甚至没有收到响应头Javascript REST服务未注册表单数据,javascript,web-services,rest,Javascript,Web Services,Rest,我正在设计一个REST服务,允许学生登录并注册到一个网站,该网站将列出他们可以使用的课程,但我坚持让学生登录或注册。下面是我尝试甚至在firebug中获取控制台以检索学生时的标题响应。当我尝试注册时,我甚至没有收到响应头 GET http://localhost:8080/CP/CoursePlanner/Planner_Service/Students/rlstric1 /CP/ (line 16) //line 16 is xmlhttp.send(); HeadersCookies Req
GET http://localhost:8080/CP/CoursePlanner/Planner_Service/Students/rlstric1
/CP/ (line 16) //line 16 is xmlhttp.send();
HeadersCookies
Request Headers
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Type applicaion/x-www-form-urlencoded
Cookie __iswl_localhost:8080=0
Host localhost:8080
Referer http://localhost:8080/CP/
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Javascript
function getStudentByEmail(url) {
var username = document.getElementById("studform").studentusername.value;
url = url + username;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, true)
xmlhttp.setRequestHeader("Content-type", "applicaion/x-www-form-urlencoded");
xmlhttp.send();
}
HTML
这里是Facade方法
public Student getStudentByUsername(String username, String password)
{
Student stud = null;
try
{
String x = password;
ResultSet rs = null;
PreparedStatement stmt = con.prepareStatement("SELECT password FROM Students WHERE password=?");
stmt.setString(1, password);
rs = stmt.executeQuery();
if(rs.next())
{
password = rs.getString("password");
if(!x.equalsIgnoreCase(password))
{
return null;
}
else
{
stmt = con.prepareStatement("SELECT Lastname, Firstname, Email, ID, Major, password FROM Students WHERE username=?");
stmt.setString(1,username);
rs = stmt.executeQuery();
if (rs.next()) {
String lname = rs.getString("Lastname");
String fname = rs.getString("Firstname");
String email = rs.getString("Email");
int ID = rs.getInt("ID");
String major = rs.getString("Major");
stud = new Student(lname, fname, email, ID, major, password);
}
return stud;
}
}
}catch(SQLException e)
{
e.printStackTrace();
}
return stud;
}
花了8个小时试图让学生在警报中出现();我甚至无法从数据库中获取这些信息,更不用说让某人注册了。我发现,如果部署REST服务,我就无法刷新页面。从Eclipse部署之后,我必须手动停止并启动apache中已部署的包,然后它才能正常工作。由于某些原因,即使新部署的包处于活动状态,在部署后刷新页面也会导致引用错误。我确信这是新部署的软件包,因为我会在一段时间内更改字母 标签,它们将在刷新时更改
哦,我解决了我的问题。为什么您的JAX-RS方法是静态的?
@Path("/Students/{username}")
@GET
@Produces("text/html")
@Consumes("application/x-www-form-urlencoded")
public static String loginStudentByUsername(@PathParam("{username}") String username)
{
PlannerFacade pf = new PlannerFacade();
Student x = pf.getStudentByUsername(username, "test");
return x.toString();
}
public Student getStudentByUsername(String username, String password)
{
Student stud = null;
try
{
String x = password;
ResultSet rs = null;
PreparedStatement stmt = con.prepareStatement("SELECT password FROM Students WHERE password=?");
stmt.setString(1, password);
rs = stmt.executeQuery();
if(rs.next())
{
password = rs.getString("password");
if(!x.equalsIgnoreCase(password))
{
return null;
}
else
{
stmt = con.prepareStatement("SELECT Lastname, Firstname, Email, ID, Major, password FROM Students WHERE username=?");
stmt.setString(1,username);
rs = stmt.executeQuery();
if (rs.next()) {
String lname = rs.getString("Lastname");
String fname = rs.getString("Firstname");
String email = rs.getString("Email");
int ID = rs.getInt("ID");
String major = rs.getString("Major");
stud = new Student(lname, fname, email, ID, major, password);
}
return stud;
}
}
}catch(SQLException e)
{
e.printStackTrace();
}
return stud;
}