1.tomcat配置管理員角色
在conf/tomcat-users.xml下
<role rolename="manager-gui"/>
<user username="lxn" password="lxn" roles="manager-gui"/>
2.form中action屬性后面?zhèn)鬟f參數(shù)獲取不到原因:
瀏覽器會將表單數(shù)據(jù)封裝為字符串,如controller=message&method=search,然后直接附在表單的 action URL 之后。這兩者之間用問號(?)進行分隔。如果GET請求的表單action屬性中已經(jīng)包含參數(shù),瀏覽器會直接將其過濾掉,再附加form表單數(shù)據(jù)。
因此,GET請求方式的表單的action屬性中不能附帶任何參數(shù),如果需要附加額外的參數(shù),可以采用如下方式:
a、采用POST請求方式,在form中增加屬性method="post"即可。
b、如果仍然想使用GET請求方式,可以在form表單中添加相應(yīng)的隱藏文本域,
3.sendRedirect方法中的路徑以"/"開頭,則代表站點的根路徑,localhost:8080,而對于forward來說,路徑以"/"開頭,代表web應(yīng)用的根目錄。
request.getRequestDispatcher(url)之所以可以使用相對路勁,是因為在getRequestDispatcher(url)方法中封裝了ServletContext.getRealPath()以獲得相應(yīng)的項目根路徑,再通過字符串相加,從而可以獲得一個完整的路徑
sendRedirect有兩種方法,可以用相對路徑(直接用),也可以用相對路徑(需加應(yīng)用路徑)
` ` `
resp.sendRedirect("/session/login.jsp");
resp.sendRedirect(req.getContextPath() +"/session/login.jsp");
```
4.轉(zhuǎn)發(fā)有三種方式
requestDispatcher.foward,pageContext.foward,jsp:fward
5.會話Cookie和持久cookie的區(qū)別
a:如果不設(shè)置過期時間,cookie為會話,會話cookie不保存在硬盤而是保存在內(nèi)存
b:如果設(shè)置了過期時間,瀏覽器會把cookie保存在硬盤
c:存儲在硬盤的cookie可以在瀏覽器共享
Session

第一次訪問,響應(yīng)中回有Set-Cookie字段

如何防止表單的重復提交
表單的重復提交情況
a:表單提交到一個Servlet,Servlet轉(zhuǎn)發(fā)到JSP頁面,地址欄還保留這servlet的路徑,這時候刷新頁面
b:在響應(yīng)頁面沒有到達時,重復點擊提交
c:點擊返回,再點提交
不算重復提交情況:
返回,刷新原來的頁面,提交
避免表單的重復提交:把標記放到session中
a:在原表單頁面生成一個隨機token
b:在原表單頁面,把token放到session中
c:在原表單頁面,把token值放到隱藏域中
d:在目標servlet中,獲取session和隱藏域中的值
e:比較兩個值是否一致,一致,把session中的值清除
f:不一致,響應(yīng)重復提交