Servlet与表单|路径匹配详解

Servlet开发得需要JSP等技术的辅助,我们先来看一下Servlet与表单的应用。

Servlet程序开发---一个实例

   由于Servlet本身也存在着HttpServletRequestHttpServletResponse对象的声明,所以既可以使用Servlet接受用户所提交的内容

   我们来以一个实例说明一下:

   项目如下:

先做一个表单的页面

    input.html 
    <html> 
    <head> 
    <title>WEB开发</title> 
    </head> 
    <body> 
    <form action="../InputServlet" method="post">    关于action路径问题下面会讲到 
       输入内容:<input type="text" name="info"> 
       <input type="submit" value="提交"> 
    </form> 
    </body> 
    </html> 


做好表单页面后再来做Servlet页面

    InputServlet.java 
    package ServletDemo 
    import java.io.*; 
    import javax.servlet.*; 
    import javax.servlet.http.*; 
    public class InputServlet extends HttpServlet{ 
        public void doGet(HttpServletRequest req,HttpServletResponse resp) 
                   throws ServletException,IOException{  //覆写doGet()方法 
            String info=req.getParameter("info");//接受请求参数 
            PrintWriter out=resp.getWriter(); //准备输出 
            out.println("<html>"); 
            out.println("<head><title>WEB开发</title></head>"); 
            out.println("<body>"); 
            out.println("<h1>"+info+"</h1>"); 
            out.println("</body>"); 
            out.println("</html>"); 
            out.close();//关闭输出 
        } 
        public void doPost(HttpServletRequest req,HttpServletResponse resp) 
                   throws ServletException,IOException{     //处理POST请求 
            this.doGet(req, resp);//同一种方法体处理         
        } 
    } 


   在程序中doPost()方法是用来处理表单中method=”post”的,如果表单中method=”get”的话就交个代码中的doGet()来处理  

   当一个Servlet编写完成之后下面就需要web.xml文件之中进行Servlet的映射配置。

    <servlet> 
         <servlet-name>Servlet</servlet-name> 
      <servlet-class>ServletDemo.InputServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
         <servlet-name>Servlet</servlet-name> 
      <url-pattern>/InputServlet</url-pattern>   url路径问题下面会讲到 
    </servlet-mapping> 


这个样子就已经写好了一个项目,细心照着做的同学可能会发现很多疑点,表单中的action的内容是怎么来的,web.xml中的<url-pattern>的内容是怎么写的,是不是随意命名就可以呢?不是的,这是个路径问题,不要着急,因为我们这一篇文章主要就来是来解决路径问题的

路径匹配详解

以上代码一定要注意路径匹配问题,

这个地方一定要注意路径问题,有关路径的编写,有2个地方需要些正确:

1.  input.html中,action的值是../InputServlet.  

2.   web.xml中,<url-pattern>的值是/InputServlet.

这两个地方一定要写正确了,action表示表单提交给Servlet来执行,但是Servlet有一个url的映射路径,如果路径填写的是/InputServlet,那么action的值就应该是../InputServlet.

../表示的是上一层目录,也就是根目录,而url中的/表示的就是根目录。这样才能将表单中的内容提交给Servlet来执行。

 Action中的../是很麻烦的,如果../多了就会感觉到头晕,我们还有一种方法,就是actiond=”InputServlet”  web.xml中的<url-pattern>/jsp/InputServlet,   因为input.html是在jsp文件夹下的。例如我们可以把上述的程序改为如下:

    input.html 
    <html> 
    <head> 
    <title>WEB开发</title> 
    </head> 
    <body> 
    <form action="InputServlet" method="post"> 
       输入内容:<input type="text" name="info"> 
       <input type="submit" value="提交"> 
    </form> 
    </body> 
    </html> 

    <servlet> 
         <servlet-name>Servlet</servlet-name> 
      <servlet-class>ServletDemo.InputServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
         <servlet-name>Servlet</servlet-name> 
      <url-pattern>/jsp/InputServlet</url-pattern> 
    </servlet-mapping> 


 

修改之后也是一样可以运行的。

     不知道大家的脑子是不是有点混乱了,我们来总结一下这个路径的问题,因为这个路径曾经难倒了一大片的学生啊。 

路径配置总结(重点) 

      Servlet和表单,表单中的内容要通过action 提交到自己编写的Servlet中执行,但是自己编写的Servlet代码会在web.xml中有个配置的url路径(url路径是<url-pattern>的内容),既然Servlet的路径是自己配置的,那么action要提交到什么地方吗?提交的路径要怎么写呢?我们解决的就是这个路径匹配问题。 我们说有两种做法:

  第一种:

      让action 提交的路径去匹配Servlet的配置路径。

      例如:  action=”../X”  那么web.xml中的url为 /X. 这里的X是自己命名的。  ../意思是上一层目录,也就是根目录

第二种:

      让Servlet的配置路径去匹配action表单提交的路径

例如:  表单页面在一个叫做A的文件夹里    action=”X”  那么web.xml中的url为 /A/X.  这里的X也是自己命名的。

 我们的表单页面时.html,但是如果是.jsp页面呢?答案是和.html一样的,但是如果是jsp页面的话,这个路径配置还有第三种方法:

例如;    表单页面在一个叫做A的文件夹里    action=”<%=request.getContextPath()%>/A/X”  那么web.xml中的url为 /A/X.  这里的X也是自己命名的

这种方法只能在jsp页面中才能使用 

 好了,关于Servlet与表单的问题就学到这个地方,本文章的重点就是路径问题,一定要弄明白

本文出自 “赵玉强的博客” 博客,请务必保留此出处http://zhaoyuqiang.blog.51cto.com/6328846/1148434

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值