`
思念-悲伤
  • 浏览: 25220 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

关于提交表单到servlet时,action的取值问题

阅读更多

要在web.xml中配置servlet配置好了后 在form的action中直接写你在web.xml中配置的<url-pattern>的名字。。例如
<servlet>
<servlet-name>AdminLogin</servlet-name>
<servlet-class>
com.java.servlet.AdminLogin
</servlet-class>
<load-on-startup>22</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AdminLogin</servlet-name>
<url-pattern>/AdminLogin</url-pattern>
</servlet-mapping>
在form的action中就直接写AdminLogin就行了

 

 

① 完全匹配
  <url-pattern>/test/list.do</url-pattern>  

② 路径匹配
  <url-pattern>/*</url-pattern> struts2匹配根路径下的全部请求

③ 扩展名匹配
  <url-pattern>*.do</url-pattern> struts1
  <url-pattern>*.html</url-pattern> 匹配全部html结尾的请求
  <url-pattern>*</url-pattern> 不能用*,否则报错

 

 

 

action写web.xml中对应的url值~~~比如说有一个LoginServlet,他在web.xml中显示的应该是这样:
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>servlet.LoginServlet</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>

而要提交的,也就是action应该等于<url-pattern>中的内容:
action="<%=request.getContextPath()%>/loginServlet"

其中<%=request.getContextPath()%>为获得当前工程目录,jsp提交到servlet中必须加这个,否则会出现404找不到页的错误~~
 
JSP页面提交表单给Servlet时,路径的写法要格外注意。

例如在web.xml中注册如下的servlet:

<servlet>
    <servlet-name>addStudent</servlet-name>
    <servlet-class>org.mytest.addStudent</servlet-class>
  </servlet>

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

假如说,你工程名字为HibernateApp3,JSP页面提交表单给servlet时有两种写法:

1. <form action=servlet/addStudent method=post>...</form>

2. <form  action=/HibernateApp3/servlet/addStudentmethod=post>...</form>

注意:/代表根目录,如果路径是使用/开头,Tomcat就是webApp那个目录,如果你不是/开头代表你从当前工程的目录开始,例如:webApp/HibernateApp3/

这一点非常重要,很多提交表单时发生的错误都是因为提交路径出错造成的。 

 

这些都是从网上收集到的各种回答,总而言之,action的提交路径,和<url-pattern></url-pattern>中的路径保持一致就不会有错,不过是有前提的,就是路径入口处要是指向这个工程的,例如下面这种就是错误:

 

<form method="get" action="/yutao"> ,,而 <url-pattern>/yutao</url-pattern>,这样提交表单时,就会报404错误:The requested resource is not available。因为前面的“/”,指的是服务器的根目录,也就是Tomcat目录下的webapps。改为:<form method="get" action="/工程名/yutao",即可。

url-parrern里面放的是servlet访问路径,我目前的结论是这路径随便写都写,当然,注意我上面说的。。。
分享到:
评论

相关推荐

    Framework学习文档

    3. 什么是SQL注入:就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 4. #和$取值区别:#{}的取值方式比较常用,可以避免SQL注入的风险;${}的取值方式...

    JSP填空题和判断题.doc

    31. 表单标记中的action属性用于指定处理表单数据程序url的地址。 32. JavaBean是一个java类,它必须有一个无参的构造方法。 33. JSP的内置对象可以直接使用,它是由web容器创立的。 34. 在JSP中,页面间对象传递...

    JAVA联创面试试题

    2. **登录界面**:编写一个登录界面通常涉及到HTML、CSS和JavaScript,后端可能使用Servlet或JSP处理表单提交,验证用户名和密码。 3. **错误处理配置**:在`web.xml`中配置错误页面是通过`error-page`元素完成的,...

    购车预订系统.doc————电子版_doc版

    6. 创建表单(Form)类和动作(Action)类,处理电话号码格式和默认状态的设定,同时配置Struts、Hibernate和Spring的配置文件。 7. 设计并实现购车预订和预订信息查询的用户界面,参照给定的图-1和图-2。 8. 进行...

    jsp ${param.id}用法

    假设有一个场景,用户从`a.jsp`页面提交表单数据,其中包含了一个名为`id`的参数,然后跳转到`b.jsp`页面。 1. **在a.jsp页面中**: ```jsp &lt;form action="b.jsp" method="post"&gt; 提交"&gt; ``` 2. **a.jsp...

Global site tag (gtag.js) - Google Analytics