从html到servlet

ran*_*ana 2 java servlets

我正在学习html和sevlets,我写了一个小应用程序,但是当我从from.html页面点击提交按钮时我没有得到任何输出:下面是我的代码

<html>
<body>
<h1 align="center>Color Selection Page</h1>
<form method="POST" action="/SelectColor.do" >
Select Color Charecterstics<p>
Color:
<select name="color" size="1">
<option>light
<option>amber
<option>brown
<option>dark
</select>

<br><br>

<center>
<input type="submit" value="Submit">
</center>

</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

web.xml文件

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">

   <servlet>
    <servlet-name>ColorServlet</servlet-name>
    <servlet-class>com.example.web.ColorServlet</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>ColorServlet</servlet-name>
    <url-pattern>/SelectColor.do</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
    <welcome-file>form.html</welcome-file>
    </welcome-file-list>

</web-app>
Run Code Online (Sandbox Code Playgroud)

的servlet

package com.example.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class ColorServlet extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException{
        res.setContentType("text/html");
        try {
            PrintWriter out = res.getWriter();
            out.println("Beer Selection ADvice<br>");
            String c=req.getParameter("color");
            out.println("<br>Got beer color "+c);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 6

我已经测试了你的代码,问题来自这一行:

<h1 align="center>Color Selection Page</h1>
Run Code Online (Sandbox Code Playgroud)

align属性未关闭,您需要添加双引号才能关闭它.

<h1 align="center">Color Selection Page</h1>
Run Code Online (Sandbox Code Playgroud)

这不会使您的HTML有效 - Eclipse仍然抱怨"标签的位置无效(中心)" - 但至少,您将能够提交表单.

实际上,即使您的代码工作正常,我也建议您编写有效的HTML或XHTML(请注意,您可能必须使用action="SelectColor.do"而不是action="/SelectColor.do"依赖于您的webapp的上下文路径,但这是另一个故事).编写"坏"HTML会导致奇怪的渲染问题和意外错误.您应该学习以正确和良好的方式编写HTML.