url重写:
1)servlet规范中引入了一种补充的会话管理机制 它允许不支持Cookie的浏览器也可以与
web服务器保持连续的会话
2)将会话标识号以参数形式附加在超链接的url地址后面的技术称为url重写
3)代码:
<a href="<%=response.encodeUrl("login.jsp")%>">重新登录</a>
<a href="<%=response.encodeUrl("logout.jsp")%>">注销</a>
绝对路径问题:
1)开发时建议编写绝对路径 相对路径会有问题
2)由servlet转发到jsp页面时,此时浏览器上显示的是servlet的路径,而若jsp页面的超链接还是相对于Jsp页面的地址,
则可能出现路径混乱的问题
/a.jsp
-path
/b.jsp
/c.jsp
a.jsp->/servlet-转发->b.jsp(由一个超链接:和b.jsp在同一个路径下的c.jsp)->无法得到页面
编写绝对路径可以避免上面的问题
:相对与当前web应用的根路径的路径
javaweb中的/的含义:
有时候代表当前web应用的根路径 还有的是web站点的根路径
1....当前web应用的根路径:http://locahost:9000/contextpath 如果/需要交由Servlet容器来处理
>请求转发时候:request.getRequestDispatcher("/path/ .jsp").forward();
> web.xml文件中映射servlet 访问路径
2...web站点的根路径:http://localhotst:9000/ 如果/交由浏览器处理
>超链接 <a href="/testServlet"></a>
>表单中的action :<form action="/login.jsp">
>做请求重定向的时候:response.sendRedirect();
/若代表的是站点的根目录 ,加上contextPath
重复提交:
①在表单提交到一个Servlet,而servlet又通过请求转发响应了一个jsp页面 此时地址兰还保留着
servlet的那个路径,在响应页面点击“刷新”
②在响应页面没有到达时 重复点击“提交按钮 ”
③ 点击返回i 再点击提交
不是重复提交的情况: 点击“返回”, “刷新”原表单页面,再“提交”
如何避免表单的重复提交:
在表单中做标记 提交到Servlet 检查标记是否存在 且是否和预定义的标记一致 若一致则受理请求,并销毁标记,若不一致,
或没有标记,则直接响应提示信息:“重复提交”
每写一个serlvet都映射么
使用httpsession实现验证码:
1)基本原理 和表单重复提交一致
>在原表单页面,,生成一个验证码的图片 同时把该图片中的字符串 放入在session中
>在原表单页面 定义一个文本域 用于输入验证码
>在目标的servlet中:获取session和表单域中的验证码的值
>比较两个的值是否一致:若一致,受理请求,且把session域中的验证吗清楚
>若不一致,则直接通过重定向返回原表单页面 提示用户"验证吗错误"
el变量:
page>request>session>application
可以进行自动的类型转换
1 与输入有关的银行对象: parame paramValues
2 cookie header headerValues
1)servlet规范中引入了一种补充的会话管理机制 它允许不支持Cookie的浏览器也可以与
web服务器保持连续的会话
2)将会话标识号以参数形式附加在超链接的url地址后面的技术称为url重写
3)代码:
<a href="<%=response.encodeUrl("login.jsp")%>">重新登录</a>
<a href="<%=response.encodeUrl("logout.jsp")%>">注销</a>
绝对路径问题:
1)开发时建议编写绝对路径 相对路径会有问题
2)由servlet转发到jsp页面时,此时浏览器上显示的是servlet的路径,而若jsp页面的超链接还是相对于Jsp页面的地址,
则可能出现路径混乱的问题
/a.jsp
-path
/b.jsp
/c.jsp
a.jsp->/servlet-转发->b.jsp(由一个超链接:和b.jsp在同一个路径下的c.jsp)->无法得到页面
编写绝对路径可以避免上面的问题
:相对与当前web应用的根路径的路径
javaweb中的/的含义:
有时候代表当前web应用的根路径 还有的是web站点的根路径
1....当前web应用的根路径:http://locahost:9000/contextpath 如果/需要交由Servlet容器来处理
>请求转发时候:request.getRequestDispatcher("/path/ .jsp").forward();
> web.xml文件中映射servlet 访问路径
2...web站点的根路径:http://localhotst:9000/ 如果/交由浏览器处理
>超链接 <a href="/testServlet"></a>
>表单中的action :<form action="/login.jsp">
>做请求重定向的时候:response.sendRedirect();
/若代表的是站点的根目录 ,加上contextPath
重复提交:
①在表单提交到一个Servlet,而servlet又通过请求转发响应了一个jsp页面 此时地址兰还保留着
servlet的那个路径,在响应页面点击“刷新”
②在响应页面没有到达时 重复点击“提交按钮 ”
③ 点击返回i 再点击提交
不是重复提交的情况: 点击“返回”, “刷新”原表单页面,再“提交”
如何避免表单的重复提交:
在表单中做标记 提交到Servlet 检查标记是否存在 且是否和预定义的标记一致 若一致则受理请求,并销毁标记,若不一致,
或没有标记,则直接响应提示信息:“重复提交”
每写一个serlvet都映射么
使用httpsession实现验证码:
1)基本原理 和表单重复提交一致
>在原表单页面,,生成一个验证码的图片 同时把该图片中的字符串 放入在session中
>在原表单页面 定义一个文本域 用于输入验证码
>在目标的servlet中:获取session和表单域中的验证码的值
>比较两个的值是否一致:若一致,受理请求,且把session域中的验证吗清楚
>若不一致,则直接通过重定向返回原表单页面 提示用户"验证吗错误"
el变量:
page>request>session>application
可以进行自动的类型转换
1 与输入有关的银行对象: parame paramValues
2 cookie header headerValues