表单提交后需要执行一个页面再加一个servlet如何做

不停哥哥 2018-06-20 02:32:17
<h3>数据添加,包括文本信息,文件信息的上传与下载</h3>
<form action="menu-insert.jsp" method="post" enctype="multipart/form-data" onSubmit="/Menu_Insert_UploadServlet">
<p>
名 称:<input name="nameinsert" type="text" value="">
说明信息:<input name="urlinsert" type="text" value="">
</p>
<p>
上传图片:<input type="file" name="上传图片">
上传文件:<input type="file" name="上传文件">
<input name="insert-ok" type="submit" value="确定" >
</p>
</form>

如上,点击确定后后面有sql insert对字符类字段存库处理,另外还有一个servlet ,名字叫Menu_Insert_UploadServlet对同时提交的文件类信息进行接受存储的处理,实际执行过程中没有任何结果,既没有执行本页下面的SQL INSERT,也没有执行SERVLET。

<form action="menu-insert.jsp" method="post" >,这样不要servlet测试是可以在数据库加入记录的,servlet也是单独测试成功的,不知道原因在哪,form不是可以同时触发两个事件么?
...全文
306 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
不停哥哥 2018-06-20
  • 打赏
  • 举报
回复
谢谢各位提供的思路,我改改看
stacksoverflow 2018-06-20
  • 打赏
  • 举报
回复
引用 10 楼 u014632570 的回复:
又想了想还是有问题,分两个表单的话,一个传递出去内容了,另外一个没有操作怎么办,会导致库里记录不完整。再看看有什么好办法把。 就是日常应用中有好多类似的场景,比如说某个报名系统,要输入姓名,性别,上传照片什么的,一般的做法是怎么做的?
比如要输入姓名,性别,上传照片的需求 简单的做的话,可以用iframe把照片框起来,选择照片,点击提交完全在ifame中进行,提交成功后根据保存路径生成预览。 然后在主界面中输入姓名,性别,再提交主界面(这时照片已经传完了,把保存后的路径或者主键返回给主界面(parent)的隐藏域中一起提交)。 作的好看点的话有各种上传组建,用js来做。比如找一下jquery中的上传组件。
楓VS痕 2018-06-20
  • 打赏
  • 举报
回复
引用 10 楼 u014632570 的回复:
又想了想还是有问题,分两个表单的话,一个传递出去内容了,另外一个没有操作怎么办,会导致库里记录不完整。再看看有什么好办法把。 就是日常应用中有好多类似的场景,比如说某个报名系统,要输入姓名,性别,上传照片什么的,一般的做法是怎么做的?
servlet接收到 页面传递的参数后,一边存储文件,一边写记录到数据库就行了
不停哥哥 2018-06-20
  • 打赏
  • 举报
回复
又想了想还是有问题,分两个表单的话,一个传递出去内容了,另外一个没有操作怎么办,会导致库里记录不完整。再看看有什么好办法把。 就是日常应用中有好多类似的场景,比如说某个报名系统,要输入姓名,性别,上传照片什么的,一般的做法是怎么做的?
stacksoverflow 2018-06-20
  • 打赏
  • 举报
回复
引用 4 楼 u014632570 的回复:
[quote=引用 2 楼 stacksoverflow 的回复:] 照着这个改改 jsp <form action="<%=request.getContextPath()%>/UrlTest1" web.xml

  <servlet>
    <servlet-name>TestName</servlet-name>
    <servlet-class>xxx.xxx.Menu_Insert_UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestName</servlet-name>
    <url-pattern>/UrlTest1</url-pattern>
  </servlet-mapping>
本意是一个表单提交后同时执行两个内容,一个jsp页面,一个servlet,servlet在WEB.XML中都做了配置的。 [/quote] 异步请求可以同时请求两个然后等返回信息。要用ajax。 但你这个需求明显是同步请求,同步请求就是串行执行,提交请求后就转到你提交的逻辑(servlet),逻辑完成后再执行下一个逻辑(比如jsp), 你可以把JSP中的逻辑放到Servlet中,在servlet中上传完文件再执行insert。 用request.getParameter在Servlet中可以获得提交的参数
maradona1984 2018-06-20
  • 打赏
  • 举报
回复
request.getRequestDispatcher("/other/page.html?para=some").forward(ServletRequest, ServletResponse);
楓VS痕 2018-06-20
  • 打赏
  • 举报
回复
引用 4 楼 u014632570 的回复:
[quote=引用 2 楼 stacksoverflow 的回复:] 照着这个改改 jsp <form action="<%=request.getContextPath()%>/UrlTest1" web.xml

  <servlet>
    <servlet-name>TestName</servlet-name>
    <servlet-class>xxx.xxx.Menu_Insert_UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestName</servlet-name>
    <url-pattern>/UrlTest1</url-pattern>
  </servlet-mapping>
本意是一个表单提交后同时执行两个内容,一个jsp页面,一个servlet,servlet在WEB.XML中都做了配置的。 [/quote] onSubmit="/Menu_Insert_UploadServlet",form 中的 onSubmit 属性,执行的是js代码,要达到你的需求,需要在js中请求 Menu_Insert_UploadServlet 方法,
不停哥哥 2018-06-20
  • 打赏
  • 举报
回复
引用 3 楼 QWERT4745 的回复:
onSubmit里面不是写servlet的路径,而是js方法,你这个写法表单都无法提交。 把menu-insert.jsp的处理逻辑复制到Menu_Insert_UploadServlet,action改为servlet的路径。
或者,又想了想,干脆分开用两个表单分别处理把,就是多了一个确定点击,先这么用把
不停哥哥 2018-06-20
  • 打赏
  • 举报
回复
引用 3 楼 QWERT4745 的回复:
onSubmit里面不是写servlet的路径,而是js方法,你这个写法表单都无法提交。 把menu-insert.jsp的处理逻辑复制到Menu_Insert_UploadServlet,action改为servlet的路径。
本来这个servlet就是简单处理上传文件的,另外一个jsp页面是字符类字段的数据库插入,就想不减少servlet的复用性所以分开的,如您所说,实在没办法就只好象您说的那样去做了
不停哥哥 2018-06-20
  • 打赏
  • 举报
回复
引用 2 楼 stacksoverflow 的回复:
照着这个改改 jsp <form action="<%=request.getContextPath()%>/UrlTest1" web.xml

  <servlet>
    <servlet-name>TestName</servlet-name>
    <servlet-class>xxx.xxx.Menu_Insert_UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestName</servlet-name>
    <url-pattern>/UrlTest1</url-pattern>
  </servlet-mapping>
本意是一个表单提交后同时执行两个内容,一个jsp页面,一个servlet,servlet在WEB.XML中都做了配置的。
QWERT4745 2018-06-20
  • 打赏
  • 举报
回复
onSubmit里面不是写servlet的路径,而是js方法,你这个写法表单都无法提交。 把menu-insert.jsp的处理逻辑复制到Menu_Insert_UploadServlet,action改为servlet的路径。
stacksoverflow 2018-06-20
  • 打赏
  • 举报
回复
照着这个改改 jsp <form action="<%=request.getContextPath()%>/UrlTest1" web.xml

  <servlet>
    <servlet-name>TestName</servlet-name>
    <servlet-class>xxx.xxx.Menu_Insert_UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestName</servlet-name>
    <url-pattern>/UrlTest1</url-pattern>
  </servlet-mapping>
stacksoverflow 2018-06-20
  • 打赏
  • 举报
回复
<form action="menu-insert.jsp" method="post" > 指向的是jsp文件 servlet需要在web.xml中配置 然后<form action="在web.xm中配置的servletURL"

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧