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字段
如何防止表單的重復(fù)提交
表單的重復(fù)提交情況
a:表單提交到一個Servlet,Servlet轉(zhuǎn)發(fā)到JSP頁面史简,地址欄還保留這servlet的路徑乃秀,這時候刷新頁面
b:在響應(yīng)頁面沒有到達時,重復(fù)點擊提交
c:點擊返回圆兵,再點提交
不算重復(fù)提交情況:
返回跺讯,刷新原來的頁面,提交
避免表單的重復(fù)提交:把標記放到session中
a:在原表單頁面生成一個隨機token
b:在原表單頁面殉农,把token放到session中
c:在原表單頁面刀脏,把token值放到隱藏域中
d:在目標servlet中,獲取session和隱藏域中的值
e:比較兩個值是否一致超凳,一致愈污,把session中的值清除
f:不一致危队,響應(yīng)重復(fù)提交