《学习内容》:

    //========学习内容=========
    JSP内置对象(4)
    JSP内置对象(5)请求与会话的区别
    JSP内置对象(6)其余的内置对象
    JSP指令标签

    《知识点—笔记》
    //=========================
    response.sendRedirect(“地址”);这个方法用来重定向 但是并没有带走request和response对象 所以他是一次新的请求
    response.addCookie(new Cookie(“username”,uname));可以添加一个cookie,是在客户端(浏览器)发起
    response.addCookie(new Cookie(“password”,password));可以添加一个cookie,是在客户端(浏览器)发起
    HttpSession session = request.getSession() 来获取一次请求的session
    session.setAttribute(“key”,value) 来往会话中添加一个键值对
    Object obj = session.getAttribute(“key”) 来获取会话中的一个值
    Enumration em = session.getAttributeNames(); 来获取session会话中的全部的key
    Object obj = application.getAttribute(); 获取全局上下文中的value
    Enumration em =application.getAttributeNames();获取上下文中的全部key
    String value = application.getInitParameter();获取init携带的参数
    boolean flag = application.setInitParameter()添加一个init携带的参数

    《代码内容》:

    主要思路—->通过代码 来演练转发和重定向 一次请求 和 新请求的区别
    通过代码演练Session一次会话的过程 在浏览器没有关闭都属于一次会话
    更新之前的Atm系统,把中间带参数转发走,改为登录成功后,设置一个session.setAttribute(“key”,value)
    在后面需要拿的时候只要在当前会话中 就可以直接用session.getAttribute(“key”)来回去到当前的uname值

    index.jsp

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <body>
    4. <form action="login" method="post">
    5. username:<input type="text" name="username" value=""><br>
    6. password:<input type="password" name="password" value=""><br>
    7. <input type="submit" value="login">
    8. </form>
    9. </body>
    10. </html>

    welcome.jsp

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <%
    4. String uname = request.getParameter("username");
    5. String password = request.getParameter("password");
    6. %>
    7. <body>
    8. 我是welcome.jsp<br>
    9. <%=uname%><br>
    10. <%=password%><br>
    11. </body>
    12. </html>

    loginController

    1. package controller;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. public class LoginController extends HttpServlet {
    8. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    9. request.setCharacterEncoding("UTF-8");
    10. String uname = request.getParameter("username");
    11. String password = request.getParameter("password");
    12. //请求转发
    13. request.getRequestDispatcher("welcome.jsp").forward(request,response);
    14. }
    15. }

    输出结果
    image.png

    LoginController 重定向代码

    1. package controller;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. public class LoginController extends HttpServlet {
    8. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    9. request.setCharacterEncoding("UTF-8");
    10. String uname = request.getParameter("username");
    11. String password = request.getParameter("password");
    12. response.sendRedirect("welcome.jsp");
    13. }
    14. }

    输出结果
    image.png

    ATM优化会话代码

    1. package controller;
    2. import service.AtmService;
    3. import util.MySpring;
    4. import javax.servlet.ServletException;
    5. import javax.servlet.http.HttpServlet;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import javax.servlet.http.HttpSession;
    9. import java.io.IOException;
    10. import java.io.PrintWriter;
    11. public class LoginController extends HttpServlet {
    12. private static AtmService atmSevice = MySpring.getBean("service.AtmService");
    13. public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    14. request.setCharacterEncoding("UTF-8");
    15. String uname = request.getParameter("uname");
    16. String upassword = request.getParameter("upassword");
    17. //调用业务层的登录业务方法
    18. String loginResult = atmSevice.login(uname,upassword);
    19. if (loginResult.equals("登录成功")){
    20. //如果登录成功的话 设置一个session来把这个请求的参数值给添加到会话中去
    21. HttpSession session = request.getSession();
    22. session.setAttribute("uname",uname);
    23. //告知请求转发的地址 并真实的转发出去
    24. request.getRequestDispatcher("welcome.jsp").forward(request,response);
    25. }else {
    26. request.getRequestDispatcher("index.html").forward(request,response);
    27. }
    28. }
    29. }
    30. package controller;
    31. import service.AtmService;
    32. import util.MySpring;
    33. import javax.servlet.ServletException;
    34. import javax.servlet.http.HttpServlet;
    35. import javax.servlet.http.HttpServletRequest;
    36. import javax.servlet.http.HttpServletResponse;
    37. import javax.servlet.http.HttpSession;
    38. import java.io.IOException;
    39. public class DoCunController extends HttpServlet {
    40. private AtmService atmService = MySpring.getBean("service.AtmService");
    41. public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    42. request.setCharacterEncoding("UTF-8");
    43. HttpSession session = request.getSession();
    44. String uname = (String)session.getAttribute("uname");
    45. String cunbal = request.getParameter("ubal");
    46. atmService.cun(uname,Float.parseFloat(cunbal));
    47. }
    48. }
    49. package controller;
    50. import service.AtmService;
    51. import util.MySpring;
    52. import javax.servlet.ServletException;
    53. import javax.servlet.http.HttpServlet;
    54. import javax.servlet.http.HttpServletRequest;
    55. import javax.servlet.http.HttpServletResponse;
    56. import javax.servlet.http.HttpSession;
    57. import javax.swing.*;
    58. import java.io.IOException;
    59. public class DoQuController extends HttpServlet {
    60. private static AtmService atmService = MySpring.getBean("service.AtmService");
    61. public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
    62. request.setCharacterEncoding("UTF-8");
    63. HttpSession session = request.getSession();
    64. String uname = (String) session.getAttribute("uname");
    65. String bal = request.getParameter("ubal");
    66. atmService.qu(uname,Float.parseFloat(bal));
    67. }
    68. }
    69. package controller;
    70. import com.mysql.cj.protocol.a.MysqlBinaryValueDecoder;
    71. import service.AtmService;
    72. import util.MySpring;
    73. import javax.servlet.ServletException;
    74. import javax.servlet.http.HttpServlet;
    75. import javax.servlet.http.HttpServletRequest;
    76. import javax.servlet.http.HttpServletResponse;
    77. import javax.servlet.http.HttpSession;
    78. import java.io.IOException;
    79. public class DoZhuanController extends HttpServlet {
    80. private static AtmService atmService = MySpring.getBean("service.AtmService");
    81. @Override
    82. public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    83. request.setCharacterEncoding("UTF-8");
    84. HttpSession session = request.getSession();
    85. String uname = (String) session.getAttribute("uname");
    86. String zhuanbal = request.getParameter("zhuanbal");
    87. String youname = request.getParameter("youname");
    88. //调用业务层转账方法
    89. atmService.zhuan(uname,youname,Float.parseFloat(zhuanbal));
    90. }
    91. }
    92. package controller;
    93. import service.AtmService;
    94. import util.MySpring;
    95. import javax.servlet.ServletException;
    96. import javax.servlet.http.HttpServlet;
    97. import javax.servlet.http.HttpServletRequest;
    98. import javax.servlet.http.HttpServletResponse;
    99. import javax.servlet.http.HttpSession;
    100. import java.io.IOException;
    101. import java.io.PrintWriter;
    102. public class QueryController extends HttpServlet{
    103. private static AtmService atmService = MySpring.getBean("service.AtmService");
    104. public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    105. request.setCharacterEncoding("UTF-8");
    106. HttpSession session = request.getSession();
    107. String uname = (String)session.getAttribute("uname");
    108. System.out.println(uname);
    109. //调用业务层获取余额
    110. Float ubal = atmService.query(uname);
    111. System.out.println(ubal);
    112. //往底层的参数集合中添加一个key--value
    113. request.setAttribute("ubal",ubal.toString());
    114. //告知路径并转发走
    115. request.getRequestDispatcher("query.jsp").forward(request,response);
    116. }
    117. }
    118. <html>
    119. <head>
    120. <meta charset="UTF-8">
    121. </head>
    122. <body>
    123. <form action="login" method="post">
    124. 账号<input type="text" name="uname" value=""><br>
    125. 密码<input type="password" name="upassword" value=""><br>
    126. <input type="submit" value="登录">
    127. </form>
    128. </body>
    129. </html>
    130. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    131. <html>
    132. <body>
    133. 尊敬的<%=session.getAttribute("uname")%>您的可用余额为:<%=request.getAttribute("ubal")%> 感谢您的使用!<br>
    134. </body>
    135. </html>
    136. <%@ page import="java.util.Enumeration" %>
    137. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    138. <html>
    139. <%
    140. String uname = request.getParameter("uname");
    141. %>
    142. <body>
    143. ********ATM银行系统********<br>
    144. 欢迎尊敬的<%=uname%>!祝您心情愉快<br>
    145. <a href="query">查询</a><br>
    146. <a href="cun.jsp">存款</a><br>
    147. <a href="cun.jsp">取款</a><br>
    148. <a href="zhuan.jsp">转账</a><br>
    149. </body>
    150. </html>
    151. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    152. <html>
    153. <body>
    154. <form action='dozhuan' method='post'>
    155. 请您输入要转账的用户<br>
    156. <input type='text' name='youname' value=''><br>
    157. 请您输入要转账的金额<br>
    158. <input type='text' name='zhuanbal' value=''><br>
    159. <input type='submit' value='确认'>
    160. </form>
    161. </body>
    162. </html>

    学习总结:
    学懂的:
    深入理解了一次会话和一次请求的区别,深入理解了3个内置对象的作用域
    pageContext application request
    有问题的地方:
    中间产生的方法太多,需要后面购物系统的练习和理解。