开发者社区> 问答> 正文

javaweb 前台"文件上传"提交后服务器跳转后发生错误

文件上传后服务器跳转发生错误

javaweb 中, html页面input type=file 直接点出"上传"或选择一个小文件再点出"上传"时, 会因为没登录而成功转到别的页面. 选中一个2M以上的文件点上传, 服务器如果转发或是发送redriect时, 都会执行多次, 比如 ,下图展示的结果, filter拦截到2到3次. 前台浏览器等待一段时间后, 得到的结果是 ERR_CONNECTION_RESET

HTML页面:

<form action="<%=request.getContextPath() %>/s/FileUpload.yc" method="post" enctype="multipart/form-data">
请选择一个文件: <input type="file" name="upload" > <br><br>
<input type="submit" value="上传"/>
</form>

SERVLET

public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//req.setCharacterEncoding("UTF-8");
System.out.println("uploadservlet doGet excecuting...");
		if(req.getSession().getAttribute("login") != null && (boolean)req.getSession().getAttribute("login")) {//登录
;
		}else {//没登录
System.out.println("uploadservlet doGet forward showinfo.jsp...");
				req.setAttribute("result", "没登录不能上传文件!!!");
				req.setAttribute("forward", "/login.jsp");
				req.getServletContext().getRequestDispatcher("/showinfo.jsp").forward(req, resp);return;
		}
		


CONSOLE台输出:

Filter ServletCharacterEncoding: /ftpWeb/s/FileUpload.yc uploadservlet doGet excecuting uploadservlet doGet forward showinfo.jsp Filter ServletCharacterEncoding: /ftpWeb/s/FileUpload.yc uploadservlet doGet excecuting uploadservlet doGet forward showinfo.jsp Filter ServletCharacterEncoding: /ftpWeb/s/FileUpload.yc uploadservlet doGet excecuting uploadservlet doGet forward showinfo.jsp

如果没有这个forward或是redirect的话, 是可以正常上传的. 从结果看, 就象是用户提交了几次. 想过识别"重复提交"的解决. 想过把req的请求参数清除. 但没弄明白
我想要达到的结果是 未登录时能正常转到登录页面. 而不是得到一个连接重置的结果.

展开
收起
deagoal 2022-11-17 14:58:30 774 0
1 条回答
写回答
取消 提交回答
  • 本人csdn 博客地址https://liuyunshengsir.blog.csdn.net/ 推荐的chatgpt地址:http://124.220.104.235/web/chatgpt

    建议使用springboot

    2022-11-21 20:07:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载