Servlet路径问题

       在初学servlet的时候路径的确是个问题,如果不好好的搞懂,在实际应用中真的会犯糊涂。

 

   下面通过几个例子分析和看下到底是个什么状况。

 

     有如下一个表单:test.jsp( 此文件在 WebRoot 根目录 )

 

<form action="SecondServlet">
    	UserName:<input type="text" name="username" size="20"/>
    	Password:<input type="password" name="password" size="20"/>
    	<input type="submit" value="OK"/>
</form>

   另一种action 的配置方式:

 

 <form action="/JSP/SecondServlet">

  web.xml配置如下:

 

<servlet>
    <servlet-name>SecondServlet</servlet-name>
    <servlet-class>com.test.servlet.SecondServlet</servlet-class>
 </servlet>
<servlet-mapping>
    <servlet-name>SecondServlet</servlet-name>
    <url-pattern>/SecondServlet</url-pattern>
</servlet-mapping>
 

  SecondServlet.java:

 

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		this.process(request, response);
	}

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		this.process(request, response);
	}

public void process(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		String username=request.getParameter("username");
		String password=request.getParameter("password");
		
		response.setContentType("text/html");
		PrintWriter out=response.getWriter();
		
		out.println("<h1>"+username+"<br>"+password+"</h1>");
	}

疑问?

 

刚刚在配置文件中<servlet-name>和<url-pattern>写的都一样,那么 jsp页面中的表单form的action是根据什么来找到对应的servlet的呢?

是根据<servlet-name> 还是根据<url-pattern>

下面通过修改web.xml 和test.jsp 表单中的action 来观察。

 

<form action="MyServlet">(写的是url-pattern的名字)
 
<servlet>
	<servlet-name>FirstServlet</servlet-name>
	<servlet-class>com.test.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>FirstServlet</servlet-name>
	<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

 

 此时输入localhost/JSP/test.jsp ,提交发现页面的跳转:

http://localhost/JSP/MyServlet?username=admin&password=admin 
 

 

 在此就证明了jsp 页面和 servlet 相关联是通过 <url-pattern> 联系起来的!

 

 

 要是不放心,可以再次修改:

 

<form action="Firstervlet">(写的是servlet-name的名字)

 

 此时在运行,发现程序会报404 错误 .

 

 

 

下面又有问题了:

此时如果test.jspjsp 文件下,即 (WebRoot-->jsp-->test.jsp )

<servlet>
	<servlet-name>SecondServlet</servlet-name>
	<servlet-class>com.test.servlet.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>SecondServlet</servlet-name>
	<url-pattern>/SecondServlet</url-pattern>
</servlet-mapping>

 

 根据上面的配置可以很容易的想到:

 

<form action="/JSP


/SecondServlet">

 或者

<form action="SecondServlet">

 

 

再改进:

 

<servlet>
	<servlet-name>SecondServlet</servlet-name>
	<servlet-class>com.test.servlet.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>SecondServlet</servlet-name>
	<url-pattern>/second/SecondServlet


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

 那么

 

<form action="second/SecondServlet">

 

还有一种配置方法:

如:demo.htmlJSP-->WebRoot-->serdemo

修改web.xml

 

<servlet-mapping>
	<servlet-name>input</servlet-name>
	<url-pattern>/serdemo/input


</url-pattern>(相应的文件夹)
</servlet-mapping>
 

此时的配置方式是直接写出了文件夹的名称。

那么demo.html 中怎么写呢?

<form action="input


" method="post">
 

 

总结:

jsp 页面中配置 servlet 路径的时候根据 url-pattern 配置

有两种形式:

通用 (在根目录下或者在某个文件下 )

<url-pattern>/x/y</url-pattern>

 

那么jsp/html 中就这样 ( 以表单为例 ) :

action="x/y"

 

或者

action="/项目名称/x/y"    (注意项目名称前面要加/


)
 

 

在文件下:

<url-pattern>/文件夹名称
/y</url-pattern>

 

那么jsp/html 中就这样:

action="y"
 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值