读书人

HTTP method POST is not supported b

发布时间: 2012-01-12 22:11:58 作者: rapoo

HTTP method POST is not supported by this URL
我做了一个登录页面 用servlet来处理密码验证 servlet是要连接数据库的 但是
页面一提交之后就
报错HTTP method POST is not supported by this URL

package my;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Loginservlet extends HttpServlet {


Connection conn;
Statement stmt;
PreparedStatement pstmt;
ResultSet rst;

/**
* Constructor of the object.
*/
public Loginservlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response, ServletRequest session)
throws ServletException, IOException {

ServletContext application=getServletContext() ;
ServletConfig config=getServletConfig() ;
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
// HttpSession session =request.getSession();
request.setCharacterEncoding("utf-8");
System.out.println("hello6");
String userid = request.getParameter("userid");
String password = request.getParameter("password");
System.out.println("hello7");

try
{ System.out.println("hello7");
rst = stmt.executeQuery("select * from userinfo where userid='"+userid+"'");

if(rst.next())
{
if(rst.getString("password").equals(password))
{
response.sendRedirect("./index.jsp");
System.out.println("密码正确");
session.setAttribute("user",userid);

}
else
response.sendRedirect("login.jsp?info=1");
System.out.println("密码正确");

}
else
{
response.sendRedirect("login.jsp?info=1");
System.out.println("密码正确");
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
if(rst!=null)
{
try{ rst.close();}catch(Exception e)
{e.printStackTrace();}
}
if(stmt!=null)
{
try{ stmt.close();}catch(Exception e){e.printStackTrace();}
}
if(conn!=null)
{
try{ conn.close();}
catch(Exception e)
{e.printStackTrace();}
}

}
}


public void init() throws ServletException {
// Put your code here
DB db = new DB();


System.out.println("hello1");
conn =db.getConn();
try {
System.out.println("hello2");
stmt = conn.createStatement() ;
System.out.println("hello3");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("hello4");
}

}

}

程序会输出
hello1
hello2
hello3

也就是有执行这人函数init() DB是一个创建连接 DB db = new DB();的一个类

各位帮一下忙啊



[解决办法]
以前遇到到这个问题。我试过把表单的method改成get就可以正常访问,但是post我不会。
楼主你的form的action和servlet-mapping都怎样的?
[解决办法]

引用楼主 eyes_on_you 的帖子:
我做了一个登录页面 用servlet来处理密码验证 servlet是要连接数据库的 但是
页面一提交之后就
报错HTTP method POST is not supported by this URL

package my;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.ser…

[解决办法]
public void doPost(HttpServletRequest request, HttpServletResponse response, ServletRequest session)

是楼上说的原因,

是你这个doPost()方法重载了系统要求的doPost()方法,系统找不到他要用的doPost()方法

public void doPost(HttpServletRequest request, HttpServletResponse response)

改成这样就OK了

要用HttpSession 从request.getSession();获得就行了

读书人网 >Java Web开发

热点推荐