解决servlet filter中if语句无效问题

今天写代码学习filter时,遇到了一件很奇怪的事情,就是当在jsp中同时提交文件和一个text组件时,servlet中的if语句无法返回true,代码如下
这是jsp代码:

<form action="uploadservlet" method="post"  enctype="multipart/form-data">
    <input type="file" name="myfile" aligin="center"><br><br>
    <input type="text" name="psd" aligin="center"><br><br>
    <input type="submit" value="上传文件">
</form>

这是filter中的代码

if(ps=="1") {
			System.out.println("filter运行成功");
			req.getRequestDispatcher("list.jsp").forward(req, res);
			return;
		}

如果这样写代码的话,filter中的代码永远都不会返回true,也就无法执行其中的相应代码,而当改为

if(ps!="1") {
			System.out.println("filter运行成功");
			req.getRequestDispatcher("list.jsp").forward(req, res);
			return;
		}

时,又会一直返回false,在试探了很久之后,我感觉到可能是enctype="multipart/form-data"这一段代码的原因,如果去掉这个属性就可以了。

在网上查阅之后发现enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值)

enctype的属性和信息为
在这里插入图片描述
问题可以定位到这里,但是背后的原理不容易弄清楚,想要详细了解的可以参照以下链接:
http://www.w3school.com.cn/tags/att_form_enctype.asp
https://blog.csdn.net/mazhibinit/article/details/49667511

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值