Java servlet类的doPost方法未给出所需结果

Java servlet类的doPost方法未给出所需结果,java,jsp,servlets,Java,Jsp,Servlets,我创建了一个jsp登录页面表单,并将逻辑放在doPost()中。但它似乎不起作用。 控制台中甚至没有显示doPost()方法中的System.out.println语句结果。 JSP页面::(LogIn.JSP) 使用者 登录表单 用户名: 密码: Servlet类(LogIn.java) @WebServlet(“/LogIn”) 公共类登录扩展了HttpServlet{ 私有静态最终长serialVersionUID=1L; 公共登录(){ 超级(); //TODO自动生成的构造函数存根

我创建了一个jsp登录页面表单,并将逻辑放在doPost()中。但它似乎不起作用。 控制台中甚至没有显示doPost()方法中的System.out.println语句结果。 JSP页面::(LogIn.JSP)


使用者
登录表单
用户名:
密码:
Servlet类(LogIn.java)

@WebServlet(“/LogIn”)
公共类登录扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
公共登录(){
超级();
//TODO自动生成的构造函数存根
}
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
//TODO自动生成的方法存根
response.getWriter().append(“服务于:”).append(request.getContextPath());
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
doGet(请求、响应);
字符串UserName=request.getParameter(“txtUserName”);
字符串密码=request.getParameter(“txtpassword”);
System.out.println(用户名);
System.out.println(密码);
如果(用户名==“Servlet”&&Password==“admin”){
sendRedirect(“Home.jsp”);
枚举paramNames=request.getParameterNames();
while(paramNames.hasMoreElements()){
字符串paramName=(字符串)paramNames.nextElement();
字符串[]paramValues=request.getParameterValues(paramName);
//读取单值数据
如果(paramValues.length==1){
字符串paramValue=paramValues[0];
if(paramValue.length()==0)
{
System.out.println(“无值”);
}
其他的
System.out.println(参数值);
}否则{
//读取多值数据
System.out.println(“…”);
对于(int i=0;i
Web.xml文件

<servlet>
<servlet-name>LogIn</servlet-name>
<servlet-class>LogIn</servlet-class>    
</servlet> 
<servlet-mapping>
<servlet-name>LogIn</servlet-name> 
<url-pattern>/LogIn</url-pattern>  
</servlet-mapping>

登录
登录
登录
/登录
在输入标记中搜索name=“txtUserName”属性,同样搜索密码字段(不存在),修改JSP代码如下,它应该可以工作:

<body>
    <form method="post" action="LogIn">
        <table>
            <tr>
                <td colspan=2 align="center"
                    style="font-weight: bold; font-size: 20pt;" align="center"><b>User
                        Login Form</b></td>
            </tr>
            <tr>
                <td colspan=2></td>
            </tr>
            <tr>
                <td>User Name:</td>
                <td><input type="text" id="txtUserName" name="txtUserName"/></td>
            </tr>

            <tr>
                <td>Password:</td>
                <td><input type="password" id="txtpassword" name="txtpassword" /></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="button" id="btnSubmit" value="Submit" /></td>
            </tr>
        </table>
    </form>

</body>

使用者
登录表单
用户名:
密码:

你为什么要从doPost调用doGet?@MichaelMarkidis很抱歉我不理解你的评论。请你解释一下。servlet中
doPost
方法的第一行是
doGet(请求,响应);
为什么要从post方法调用get方法?另外,如果您试图直接从浏览器转到servlet,会发生什么情况。?在
doPost()中调用
doGet(请求,响应);
没有意义。另外,表单中没有定义名称属性。这可能有助于您开始。
<servlet>
<servlet-name>LogIn</servlet-name>
<servlet-class>LogIn</servlet-class>    
</servlet> 
<servlet-mapping>
<servlet-name>LogIn</servlet-name> 
<url-pattern>/LogIn</url-pattern>  
</servlet-mapping>
 request.getParameter("txtUserName");
<body>
    <form method="post" action="LogIn">
        <table>
            <tr>
                <td colspan=2 align="center"
                    style="font-weight: bold; font-size: 20pt;" align="center"><b>User
                        Login Form</b></td>
            </tr>
            <tr>
                <td colspan=2></td>
            </tr>
            <tr>
                <td>User Name:</td>
                <td><input type="text" id="txtUserName" name="txtUserName"/></td>
            </tr>

            <tr>
                <td>Password:</td>
                <td><input type="password" id="txtpassword" name="txtpassword" /></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="button" id="btnSubmit" value="Submit" /></td>
            </tr>
        </table>
    </form>

</body>