HttpServlet 简单表单示例

本文代码转载自

《Servlet、JSP和Spring MVC初学指南》

下面是一个简单的利用get进行输入表单页面显示,post进行
表单提交内容展示的实例

package main.ServletTest;

/**
 * Created by ehang on 2017/2/8.
 */

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
        name = "FormServlet",
        urlPatterns = {"/form"}
)
public class FormServlet extends HttpServlet {
    private static final long serialVersionUID = 54L;
    private static final String TITLE = "Order Form";

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        writer.println("<html><head><title>" +
                TITLE +
                "</title></head><body>" +
                "<h1>" +  TITLE + "</h1>" +
                "<form method = 'post'>"
                + "<table>"
                + "<tr>"
                + "<td>Name:</td>"
                + "<td><input name = 'name'/></td>"
                + "</tr>"

                + "<tr>"
                + "<td>Address:</td>"
                + "<td><textarea name = 'address' cols = '40' rows = '5'></textarea></td>"
                + "</tr>"

                + "<tr>"
                + "<td>Country:</td>"
                + "<td><select name = 'country'>"
                + "<option>United States</option>"
                + "<option>Canada</option>"
                + "</select></td>"
                + "</tr>"

                + "<tr>"
                + "<td>Delivery Method</td>"
                + "<td><input type = 'radio' name = 'deliveryMethod' value = 'First Class'/>First Class"
                + "<input type = 'radio' name = 'deliveryMethod' value = 'Second Class'/>Second Class"
                + "</td>"
                + "</tr>"

                + "<tr>"
                + "<td>Shipping Instructions:</td>"
                + "<td><textarea name = 'instruction' cols = '40' rows = '5'></textarea>"
                + "</td>"
                + "</tr>"

                + "<tr>"
                + "<td> </td>"
                + "<td><textarea name = 'instructiuon' cols = '40' rows = '5'></textarea></td>"
                + "</tr>"

                + "<tr>"
                + "<td>Please send me the latest product catalog</td>"
                + "<td><input type = 'checkbox' name = 'catalogRequest'></td>"
                + "</tr>"

                + "<tr>"
                + "<td> </td>"
                + "<td><input type = 'reset'/><input type = 'submit'></td>"
                + "</tr>"

                + "</table>"
                + "</form>" +
                "</body></html>");
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response )throws ServletException, IOException{
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        writer.println("<html>" +
                "<head><title>" +
                TITLE +
                "</title></head><body>" +
                "<h1>" +
                TITLE +
                "</h1>" +
                "<table>" +

                "<tr>" +
                "<td>Name:</td>" +
                "<td>" +
                request.getParameter("name") +
                "</td>" +
                "</tr>" +

                "<tr>" +
                "<td>Address:</td>" +
                "<td>" +
                request.getParameter("address") +
                "</td>" +
                "</tr>" +

                "<tr>" +
                "<td>Country:</td>" +
                "<td>" +
                request.getParameter("country") +
                "</td>" +
                "</tr>" +

                "<tr>" +
                "<td>Shipping Instructions:</td>" +
                "<td>");

                String[] instructions = request.getParameterValues("instructions");
                if(instructions != null){
                    for(String instruction: instructions){
                        writer.println(instruction + "<br/>");
                    }
                }

                writer.println("</td></tr>" +
                        "<tr><td>Delivery Method:</td>" +
                        "<td>" +
                        request.getParameter("deliveryMethod") +
                        "</td></tr>" +

                        "<tr>" +
                        "<td>Catalog Request:</td>" +
                        "<td>");

                if(request.getParameter("catalogRequest") == null){
                    writer.println("No");
                }
                else{
                    writer.println("Yes");
                }
                 writer.println( "</td></tr>" +

                "</table>");

                writer.println(
                "<div style = 'border:1px soild #ddd; margin-top:40px;font-size:90%'>" +
                        "Debug Info<br/>");

                Enumeration<String> parameterNames = request.getParameterNames();
                while(parameterNames.hasMoreElements()){
                    String paramName = parameterNames.nextElement();
                    writer.println(paramName + ": ");
                    String[] paramValues = request.getParameterValues(paramName);
                    for(String paramValue: paramValues){
                        writer.println(paramValue + "<br/>");
                    }
                }

                writer.println(
                "</div></body>" +
                "</html>");

    }

}

使用input标签对应的name来通过request.getParameter得到提交值。

该例使用 annotation WebServlet urlPatterns映射,一般提到的映射方式为web.xml中的部署描述符配置方式。
后者较前者的优势在于提供了WebServlet所不支持的若干描述 如位于<servlet>中可配置<load-on-startup>
该节点支持整数值作为输入,指定在程序启动时而非第一次调用时初始化servlet类,
当对多个servlet都配置了该节点时,不同的load-on-start节点值决定了载入的先后顺序,
基本上类似于对中间件指定载入顺序。
描述符配置的方式也可包含如servlet进行初始化信息。

如利用annotation WebServlet可如下指定servlet初始化参数
@WebServlet(
    name = "test",
    urlpatterns = {"/test"};
    initParams = {
        @WebInitParams(name = "admin", value = "SV")
    }
)
 
相应的部署描述符servlet配置为
<servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>SomeClass</servlet-class>
    <init-param>
        <param-name>admin</param-name>
        <param-value>SV</param-value>
    </init-param>
</sertvlet>

<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/test</url-pattern>
</servlet-mapping>



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值