• Jobs(二) Servlet的配置


      折腾了一会,终于实现了:在浏览器中输入数据,然后在Java类中取出输出,并使浏览器重定向(接收一个request,返回一个response)。

      这里有几个问题需要详细记录一下。

      首先是request的发起处,即HTML中的form元素。form元素中的有两个属性是必填的:action和method。如下图:

    <form action="test" method="get"> 
            Personal Information:<br/>
            Your Name:<br/>
            <input type="text" name="userName" value="NoOne">
            <input type="submit" name="Submit" value="搞定">
    </form>

       首先,method属性代表request的提交方式,只能是GET或者POST,这是计算机网络中的基础知识,无需多言。

      而action属性,指明了当提交表单时,向何处发送表单数据。它可以填:

    • 绝对URL - 指向其他站点(比如 action="http://www.google.com"),当然,这里谷歌不会对你的请求做什么回应;
    • 相对URL - 指向站点内的文件(比如 action="test.htm"),或者是处理这些数据的对应的Servlet名(例如action="test",test是处理这些数据的一个servlet所映射的url,我在web.xml中已经映射好了,见下图);
        <servlet>
            <servlet-name>indexServlet</servlet-name>
            <servlet-class>org.bigo.IndexResponse</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>indexServlet</servlet-name>
            <url-pattern>/test</url-pattern>
        </servlet-mapping>

      这里使用的是相对URL,它是一个servlet,名字为indexServlet(servlet名可以自定义,因为我输入数据的页面为index.html),它所映射到的处理类(对request中的数据进行实际处理的Java类)为org.bigo包中IndexResponse.java。后面为映射配置,我指定了名为indexServlet的servlet,处理这样的request:request的请求URL为“http://www.xxx.com/aaa/.../test”。

      需要注意的是在servlet-mapping的url-pattern中,不能直接写为“test”,任何时候都不能省略斜杠,必须写“/test”。同时在HTML的form元素的action属性中,只能写action="test",而不能写action="/test“。(如果指定的是文件名,也同样如此,加上斜杠后,浏览器有不同的处理方式)

      我的Web应用的url为“http://localhost:8080/jobs/”,所以当在form中编写“action="http://localhost:8080/jobs/test",即填写的绝对url时,也能达到同样的目的。(那么如果这里在绝对URL后加了“/”呢?就会404)。

      这里也写个最佳实践:<url-pattern>元素值为“/aabbcc”,那么HTML的form的action属性用相对url就为“aabbcc”,二者都不要再添加多余的符号了。

      

      这里还需要注意的一个点是,我在IDE的HTML编辑页面,可以点击一个浏览器的logo直接显示一个html文件,IDE提供这个功能是为了方便即时查看页面,此时浏览器中的地址,并不会是你的web工程的地址,所以千万不要在这种情况下进行功能测试。只有在浏览器中输入自己web工程的url后,才会有正确的反馈。(我中间就这样出错了)

     

     

  • 相关阅读:
    ZOJ 3327 Friend Number
    ZOJ 3324 Machine
    2010-2011 ACM-ICPC, NEERC, Southern Subregional Contest C Explode 'Em All
    UVA 12594 Naming Babies
    POJ 3709 K-Anonymous Sequence
    POJ 1180 Batch Scheduling
    POJ 1160 Post Office
    HDU 3516 Tree Construction
    HDU 3045 Picnic Cows
    UVALive 5097 Cross the Wall
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/10010635.html
Copyright © 2020-2023  润新知