當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JSPServlet学习笔记----第4章
生活随笔
收集整理的這篇文章主要介紹了
JSPServlet学习笔记----第4章
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
HTTP是基于請求/響應的無狀態的通信協議。
使服務器記得此次請求與之后請求關系的方式,叫做會話管理。
隱藏域:由瀏覽器在每次請求時主動告知服務器多次請求間必要的信息。僅適用于一些簡單的狀態 管理,如在線問卷。
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;/*** Created by N3verL4nd on 2017/2/21.*/ @WebServlet("/questionnaire") public class HiddenFieldServlet extends HttpServlet {private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{request.setCharacterEncoding("UTF-8");response.setContentType("text/html; charset=UTF-8");//response.setHeader("Content-Type", "text/html; charset=UTF-8");//response.addHeader("Content-Type", "text/html; charset=UTF-8");PrintWriter out = response.getWriter();out.println("<!DOCTYPE html>"+ "<html>"+"<head>"+"<title>問卷調查</title>"+"</head>"+"<body>");String page = request.getParameter("page");out.println("<form action='questionnaire' method='post'>");if (page == null){out.println("問題一:<input type='text' name='p1q1' /><br />");out.println("問題二:<input type='text' name='p1q2' /><br />");out.println("<input type='submit' name='page' value='下一頁' />");}else if ("下一頁".equals(page)){String p1q1 = request.getParameter("p1q1");String p1q2 = request.getParameter("p1q2");out.println("問題三:<input type='text' name='p2q1' />");out.println("<input type='hidden' name='p1q1' value='" + p1q1 + "' />");out.println("<input type='hidden' name='p1q2' value='" + p1q2 + "' />");out.println("<input type='submit' name='page' value='完成' />");}else if ("完成".equals(page)){out.println(request.getParameter("p1q1") + "<br />");out.println(request.getParameter("p1q2") + "<br />");out.println(request.getParameter("p2q1") + "<br />");}out.println("</form>");out.println("</body>");out.println("</html>");out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {processRequest(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {processRequest(request, response);} }cookie:
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** Created by N3verL4nd on 2017/2/23.*/ @WebServlet(name = "SetServlet", urlPatterns = {"/setcookies.do"}) public class SetServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {for (int i = 0; i < 5; i++){Cookie cookie = new Cookie(String.valueOf(i), "xiya");response.addCookie(cookie);}response.setContentType("text/html; charset=UTF-8");PrintWriter out = response.getWriter();out.println("設置cookies" + "<br />");out.println("<a href='showcookies.do'>showcookies</a>");out.close();} } import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** Created by N3verL4nd on 2017/2/23.*/ @WebServlet(name = "ShowServlet", urlPatterns = {"/showcookies.do"}) public class ShowServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html; charset=UTF-8");PrintWriter out = response.getWriter();out.println("<!DOCTYPE html>");out.println("<html>");out.println("<head>");out.println("<title>顯示Cookies</title>");out.println("</head>");out.println("<body>");out.println("<body>");out.println("<table>");out.println("<tr>");out.println("<th>Cookie Name</th>");out.println("<th>Cookie Value</th>");out.println("</tr>");Cookie[] cookies = request.getCookies();if(cookies != null){for (Cookie cookie : cookies){String key = cookie.getName();String value = cookie.getValue();out.println("<tr>");out.println("<td>" + key + "</td>");out.println("<td>" + value + "</td>");out.println("</tr>");}}out.println("</table>");out.println("</body>");out.println("</html>");} }url重寫:其實就是GET請求參數的應用,當服務器響應瀏覽器上一次請求時,將某些相關信息以超鏈接方式響應給瀏覽器,超鏈接中包含參數信息。
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;/*** Created by N3verL4nd on 2017/2/22.*/ @WebServlet(name = "SearchServlet", urlPatterns = {"/search.do"}) public class SearchServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html; charset=UTF-8");PrintWriter out = response.getWriter();out.println("<!DOCTYPE html>");out.println("<html>");out.println("<head>");out.println("<title>調查</title>");out.println("</head>");out.println("<body>");String start = request.getParameter("start");if (start == null){start = "1";}int count = Integer.parseInt(start);int begin = 10 * count - 9;int end = 10 * count;out.println("第 " + begin + " 到 " + end + " 搜索結果<br />");out.println("<ul>");for (int i = begin; i <= end; i++){out.println("<li>搜索結果" + i + "</li>");}out.println("</ul>");for (int i = 1; i < 10; i++){if (i == count){out.println(i);continue;}out.println("<a href='search.do?start=" + i + "'>" + i + "</a>");}out.println("</body>");out.println("</html>");} }
在Servlet/JSP中可以使用HttpSession來進行會話管理。
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 javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter;/*** Created by N3verL4nd on 2017/2/22.*/ @WebServlet(name = "SessionServlet", urlPatterns = {"/session.do"}) public class SessionServlet extends HttpServlet {private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{request.setCharacterEncoding("UTF-8");response.setContentType("text/html; charset=UTF-8");PrintWriter out = response.getWriter();out.println("<!DOCTYPE html>"+ "<html>"+"<head>"+"<title>問卷調查</title>"+"</head>"+"<body>");String page = request.getParameter("page");out.println("<form action='session.do' method='post'>");if (page == null){out.println("問題一:<input type='text' name='p1q1' /><br />");out.println("問題二:<input type='text' name='p1q2' /><br />");out.println("<input type='submit' name='page' value='下一頁' />");}else if ("下一頁".equals(page)){String p1q1 = request.getParameter("p1q1");String p1q2 = request.getParameter("p1q2");HttpSession session = request.getSession();System.out.println(session.getId());session.setAttribute("p1q1", p1q1);session.setAttribute("p1q2", p1q2);out.println("問題三:<input type='text' name='p2q1' /><br />");out.println("<input type='submit' name='page' value='完成' />");}else if ("完成".equals(page)){String p2q1 = request.getParameter("p2q1");HttpSession session = request.getSession();System.out.println(session.getId());session.setAttribute("p2q1", p2q1);out.println(session.getAttribute("p1q1") + "<br />");out.println(session.getAttribute("p1q2") + "<br />");out.println(session.getAttribute("p2q1") + "<br />");}out.println("</form>");out.println("</body>");out.println("</html>");out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {processRequest(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {processRequest(request, response);} }如上所示,HttpSession是通過HttpServletRequest獲得的,但是該實例存在于Web容器內。 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 javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter; import java.util.Date;/*** Created by N3verL4nd on 2017/2/23.*/ @WebServlet(name = "SessionInfoServlet", urlPatterns = {"/SessionInfoServlet"}) public class SessionInfoServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html; charset=UTF-8");HttpSession session = request.getSession();//session.setMaxInactiveInterval(10);//多少秒失效PrintWriter out = response.getWriter();out.println("<!DOCTYPE html>");out.println("<html>");out.println("<head>");out.println("<title>SessionInfoServlet</title>");out.println("</head>");out.println("<body>");out.println("New Session:" + session.isNew() + "<br />");out.println("Session ID:" + session.getId() + "<br />");out.println("getCreationTime:" + new Date(session.getCreationTime()) + "<br />");out.println("getLastAccessedTime:" + new Date(session.getLastAccessedTime()) + "<br />");out.println("getRequestedSessionId:" + request.getRequestedSessionId() + "<br />");out.println("isRequestedSessionIdFromURL:" + request.isRequestedSessionIdFromURL() + "<br />");out.println("isRequestedSessionIdFromCookie:" + request.isRequestedSessionIdFromCookie() + "<br />");out.println("isRequestedSessionIdValid:" + request.isRequestedSessionIdValid() + "<br />");out.println("<br /><a href='" + response.encodeURL("SessionInfoServlet") + "'>刷新</a><br />");} }
對于以上程序,我們使用Fiddler抓包觀察下:
第一次調用該Servlet會返回Set-Cookie,第二次調用我們會向HTTP服務器發送該cookie來獲取Web容器內對應的HttpSession。
轉載于:https://www.cnblogs.com/lgh1992314/p/6616233.html
總結
以上是生活随笔為你收集整理的JSPServlet学习笔记----第4章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全排列的递归与非递归形式
- 下一篇: 207. 课程表/210. 课程表 II