Form表單的提交
涉及的常識(shí)問題:
http://localhost:8888/瀏覽器中輸入這個(gè)地址默認(rèn)的訪問是你Tomcat中webapps目錄下的文件。
http://localhost:8888/Hello訪問的是webapps下Hello目錄中的文件-
新建一個(gè)jsp文件。body代碼如下:
<body> 這是我們的第一個(gè)web項(xiàng)目 <form action="sessionOne" method="post"></form> <input type="text" name="username"> <input type="submit" value="提交"></body>
Form表單的提交
我們?cè)赟essionOne的Servlet中,先拿到你在form表單里的數(shù)據(jù)通過如下方式;
在doPost中代碼如下:
tring name = request.getParameter("username");
String sex = request.getParameter("gender");
String[] hobby = request.getParameterValues("hobby");
PrintWriter printWriter = response.getWriter();
printWriter.println("name:"+name);
-
提交方式
有form表單里面的Method屬性控制
GET:(安全性不高)最多只能提交256個(gè)字符
把數(shù)據(jù)放在協(xié)議的頭部
可以在瀏覽器里的地址欄里面看到的
POST
協(xié)議的體部
不可以在瀏覽器的地址欄里面看到的
安全性高
數(shù)據(jù)的長(zhǎng)度是沒有限制的
想要使用post提交,必須明確指定使用post提交,否則默認(rèn)都用get -
亂碼問題
原則:字符從編寫到顯示都采用一種編碼方式
UTF-8 GBK GB2312
控制字符編寫的編碼:工程右擊->Text file enconding ->GBK,UTF-8
-
數(shù)據(jù)傳輸上控制(如果是Get方式提交就必須在servers下面的server.xml中的Connector修改也就是查看端口號(hào)那里。
request.setCharacterEncoding("GBK"); response.setCharacterEncoding("GBK"); 瀏覽器顯示編碼
數(shù)據(jù)庫中的亂碼:存的時(shí)候是什么編碼方式,那么取得時(shí)候就是什么編碼方式
- 路徑問題
我們常需要在form表單中進(jìn)行跳轉(zhuǎn),跳轉(zhuǎn)的時(shí)候?qū)懙腁ction就設(shè)計(jì)到路徑問題還有就是在Servlet進(jìn)行內(nèi)部跳轉(zhuǎn)(獲取分發(fā)器時(shí))也會(huì)涉及到路徑問題比如(如下代碼)。
getServletConfig().getServletContext()
.getRequestDispatcher("/WEB-INF/jsp/register.jsp")
.forward(request, response);
- 相對(duì)路徑:相對(duì)點(diǎn)
- 絕對(duì)路徑:以“/”開頭,
當(dāng)/在web應(yīng)用的前端,代表的Tomcat的路徑
如:html
當(dāng)/在web應(yīng)用的后臺(tái),代表web后臺(tái)的路徑
-
跳轉(zhuǎn)問題
-
內(nèi)部跳轉(zhuǎn)
context request .getRequestDispatcher("WEB-INF/jsp/first.jsp") .forword(req,resp); -
路徑
-
絕對(duì) /開頭
后臺(tái)(內(nèi)部分發(fā)如servlet) / =>項(xiàng)目根目錄(webcontent)
前臺(tái) / =>服務(wù)器根目錄(webapps)(重定向跳轉(zhuǎn)) response.sendRedirector("/"); <form action="/"></form> <a href="/"></a> -
相對(duì)
相對(duì)當(dāng)前文件(jsp,html..)或者當(dāng)前Servlet所在的命名空間-
http://localhost:8888/week2/one/a.jsp
a.jsp{ <a href="loginServlet">aa</a> } 點(diǎn)擊aa跳轉(zhuǎn)后的路徑是
http://localhost:8888/week2/one/loginServlet
-
-
-
a.jsp{
<a href="/loginServlet">aa</a>
}
* 點(diǎn)擊aa跳轉(zhuǎn)后的路徑是
`http://localhost:8888/loginServlet`
@WebServlet("/toFirstServlet")
toFirstServlet{
//內(nèi)部跳轉(zhuǎn)
//request.getRequestDispatcher("/a.jsp");
response.sendRedirector("/a.jsp");
}
- forward()
重置response輸出流 - include()
在上一個(gè)response輸出流上進(jìn)行內(nèi)容追加