一,开发的时候一定要写绝对路径,写相对路径可能会出现问题。
在由servlet转发到jsp页面的时候,此时浏览器地址栏上显示的是servlet的路径,而jsp页面的超链接还是相对于该jsp页面的地址,则可能出现路径混乱的问题。
二,javaWeb中的 / 代表什么?
①web应用的根路径:请求转发;web.xml配置文件中的/
②web站点的站点:超链接中的/;表达中的action;重定向
三,表单的重复提交
①表单的重复提交的影响:网络存在延迟,在表单中用户可能多次点击提交按钮,这样会加大服务器的负担。
②重复提交的情况:
----》在表单提交得到一个servlet,而servlet又通过请求转发的方式响应到一个jsp,此时地址栏仍然是servlet的地址,在响应的页面点击刷新
----》响应页面没有到达时,重复点击提交按钮
----》点击点击返回然后再点击提交
③如何避免表单的重复提交?
在表单中做一个标记,提交到servlet的时候,检查是否存在于预定的标记一样,如果一样,则受理请求,若不一致或者没标记,则直接不响应和销毁标记。
----》在原表单生成一个随机值token
----》在原表单,把tokne放入session属性中
----》把token放入隐藏域中
----》在目标servlet中,获取sesion和隐藏域中的tokne值比较
----》如果一致,受理请求,而且把session中的token清除,不一致则直接响应页面“重复提交”
四,利用ssession实现一次性验证码
原理和表单的重复提交一致,使用验证码而已防止表单重复提交
步骤
在原表单生成一个验证码图片,生成图片的同时,把图片中的字符放入到session中
在原表单定义一个文本域,用于输入验证码
在servlet中获取session和表单域中的验证码
比较是否一致,如果一致则受理请求,并且把session中的验证码属性清除
如果不一致,则重定向到表单页面,并给用户提示。