1.tomcat配置管理员角色
在conf/tomcat-users.xml下
<role rolename="manager-gui"/>
<user username="lxn" password="lxn" roles="manager-gui"/>
2.form中action属性后面传递参数获取不到原因:
浏览器会将表单数据封装为字符串,如controller=message&method=search,然后直接附在表单的 action URL 之后。这两者之间用问号(?)进行分隔。如果GET请求的表单action属性中已经包含参数,浏览器会直接将其过滤掉,再附加form表单数据。
因此,GET请求方式的表单的action属性中不能附带任何参数,如果需要附加额外的参数,可以采用如下方式:
a、采用POST请求方式,在form中增加属性method="post"即可。
b、如果仍然想使用GET请求方式,可以在form表单中添加相应的隐藏文本域,
3.sendRedirect方法中的路径以"/"开头,则代表站点的根路径,localhost:8080,而对于forward来说,路径以"/"开头,代表web应用的根目录。
request.getRequestDispatcher(url)之所以可以使用相对路劲,是因为在getRequestDispatcher(url)方法中封装了ServletContext.getRealPath()以获得相应的项目根路径,再通过字符串相加,从而可以获得一个完整的路径
sendRedirect有两种方法,可以用相对路径(直接用),也可以用相对路径(需加应用路径)
` ` `
resp.sendRedirect("/session/login.jsp");
resp.sendRedirect(req.getContextPath() +"/session/login.jsp");
```
4.转发有三种方式
requestDispatcher.foward,pageContext.foward,jsp:fward
5.会话Cookie和持久cookie的区别
a:如果不设置过期时间,cookie为会话,会话cookie不保存在硬盘而是保存在内存
b:如果设置了过期时间,浏览器会把cookie保存在硬盘
c:存储在硬盘的cookie可以在浏览器共享
Session
第一次访问,响应中回有Set-Cookie字段
如何防止表单的重复提交
表单的重复提交情况
a:表单提交到一个Servlet,Servlet转发到JSP页面,地址栏还保留这servlet的路径,这时候刷新页面
b:在响应页面没有到达时,重复点击提交
c:点击返回,再点提交
不算重复提交情况:
返回,刷新原来的页面,提交
避免表单的重复提交:把标记放到session中
a:在原表单页面生成一个随机token
b:在原表单页面,把token放到session中
c:在原表单页面,把token值放到隐藏域中
d:在目标servlet中,获取session和隐藏域中的值
e:比较两个值是否一致,一致,把session中的值清除
f:不一致,响应重复提交