模擬會(huì)話
首先通過(guò)一個(gè)例子模擬一下會(huì)話,此時(shí)有一個(gè)問(wèn)答網(wǎng)頁(yè)碑宴,分為兩頁(yè)作答谬返,然后提交給服務(wù)器。
在目前所學(xué)的知識(shí)中潘悼,你能采取的方法只有:
- 將第一頁(yè)的數(shù)據(jù)上傳到服務(wù)器,然后再將第二頁(yè)的數(shù)據(jù)上傳給服務(wù)器爬橡。
- 將第一頁(yè)要發(fā)送到服務(wù)器的數(shù)據(jù)轉(zhuǎn)發(fā)至第二頁(yè)治唤,然后和第二頁(yè)數(shù)據(jù)一并上傳至服務(wù)器。
1.方法要兩次與服務(wù)器溝通糙申,且服務(wù)器是無(wú)法判斷第一次的數(shù)據(jù)與第二次的聯(lián)系宾添。所以只能使用方法2.
方法2.的執(zhí)行:
1.第一頁(yè)的數(shù)據(jù)使用submit提交至第二頁(yè)
1.第二頁(yè)請(qǐng)求獲取變量,使用類型為hidden的input標(biāo)簽跟第二頁(yè)數(shù)據(jù)存儲(chǔ)在一塊
1.一并提交給服務(wù)器
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "Servlet",urlPatterns = "/questionServlet")
public class questionServlet extends HttpServlet {
protected void res(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String page = request.getParameter("page"); //使用page變量區(qū)分頁(yè)數(shù)
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<form action='questionServlet' method='post'>");
//第一頁(yè)
if(page==null){
out.println("一:<input type='text' name='p1q1'>");
out.println("<input type='submit' name='page' value='下一頁(yè)'>");
}
//第二頁(yè)
else if (page.equals("下一頁(yè)")){
String p1q1 = request.getParameter("p1q1");
out.println("二:<input type='text' name='p2q1'>");
out.println("<input type='hidden' value='"+p1q1+"'name='p1q1'>");//使用hidden類型input標(biāo)簽保存數(shù)據(jù)
out.println("<input type='submit' name='page' value='提交'>");//一并提交
}
else if (page.equals("提交")){
out.println(request.getParameter("p1q1")+"<br>"+request.getParameter("p2q1"));
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
res(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
結(jié)果截圖:
第一頁(yè)界面
模擬上傳服務(wù)器
思考:
即便是使用hidden柜裸,只要是前端語(yǔ)言缕陕,總會(huì)在瀏覽器中留下痕跡,例如粘室,在源代碼中查看到數(shù)據(jù):
第二頁(yè)HTML源代碼
所以此方法存在安全隱患榄檬,但可以用于一些對(duì)隱私要求不高的場(chǎng)景中