《学习内容》:
//========学习内容=========
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
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><body><form action="login" method="post">username:<input type="text" name="username" value=""><br>password:<input type="password" name="password" value=""><br><input type="submit" value="login"></form></body></html>
welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><%String uname = request.getParameter("username");String password = request.getParameter("password");%><body>我是welcome.jsp<br><%=uname%><br><%=password%><br></body></html>
loginController
package controller;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class LoginController extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{request.setCharacterEncoding("UTF-8");String uname = request.getParameter("username");String password = request.getParameter("password");//请求转发request.getRequestDispatcher("welcome.jsp").forward(request,response);}}
输出结果
LoginController 重定向代码
package controller;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class LoginController extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{request.setCharacterEncoding("UTF-8");String uname = request.getParameter("username");String password = request.getParameter("password");response.sendRedirect("welcome.jsp");}}
输出结果
ATM优化会话代码
package controller;import service.AtmService;import util.MySpring;import javax.servlet.ServletException;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;public class LoginController extends HttpServlet {private static AtmService atmSevice = MySpring.getBean("service.AtmService");public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String uname = request.getParameter("uname");String upassword = request.getParameter("upassword");//调用业务层的登录业务方法String loginResult = atmSevice.login(uname,upassword);if (loginResult.equals("登录成功")){//如果登录成功的话 设置一个session来把这个请求的参数值给添加到会话中去HttpSession session = request.getSession();session.setAttribute("uname",uname);//告知请求转发的地址 并真实的转发出去request.getRequestDispatcher("welcome.jsp").forward(request,response);}else {request.getRequestDispatcher("index.html").forward(request,response);}}}package controller;import service.AtmService;import util.MySpring;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;public class DoCunController extends HttpServlet {private AtmService atmService = MySpring.getBean("service.AtmService");public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");HttpSession session = request.getSession();String uname = (String)session.getAttribute("uname");String cunbal = request.getParameter("ubal");atmService.cun(uname,Float.parseFloat(cunbal));}}package controller;import service.AtmService;import util.MySpring;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import javax.swing.*;import java.io.IOException;public class DoQuController extends HttpServlet {private static AtmService atmService = MySpring.getBean("service.AtmService");public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{request.setCharacterEncoding("UTF-8");HttpSession session = request.getSession();String uname = (String) session.getAttribute("uname");String bal = request.getParameter("ubal");atmService.qu(uname,Float.parseFloat(bal));}}package controller;import com.mysql.cj.protocol.a.MysqlBinaryValueDecoder;import service.AtmService;import util.MySpring;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;public class DoZhuanController extends HttpServlet {private static AtmService atmService = MySpring.getBean("service.AtmService");@Overridepublic void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");HttpSession session = request.getSession();String uname = (String) session.getAttribute("uname");String zhuanbal = request.getParameter("zhuanbal");String youname = request.getParameter("youname");//调用业务层转账方法atmService.zhuan(uname,youname,Float.parseFloat(zhuanbal));}}package controller;import service.AtmService;import util.MySpring;import javax.servlet.ServletException;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;public class QueryController extends HttpServlet{private static AtmService atmService = MySpring.getBean("service.AtmService");public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");HttpSession session = request.getSession();String uname = (String)session.getAttribute("uname");System.out.println(uname);//调用业务层获取余额Float ubal = atmService.query(uname);System.out.println(ubal);//往底层的参数集合中添加一个key--valuerequest.setAttribute("ubal",ubal.toString());//告知路径并转发走request.getRequestDispatcher("query.jsp").forward(request,response);}}<html><head><meta charset="UTF-8"></head><body><form action="login" method="post">账号<input type="text" name="uname" value=""><br>密码<input type="password" name="upassword" value=""><br><input type="submit" value="登录"></form></body></html><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><body>尊敬的<%=session.getAttribute("uname")%>您的可用余额为:<%=request.getAttribute("ubal")%> 感谢您的使用!<br></body></html><%@ page import="java.util.Enumeration" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><%String uname = request.getParameter("uname");%><body>********ATM银行系统********<br>欢迎尊敬的<%=uname%>!祝您心情愉快<br><a href="query">查询</a><br><a href="cun.jsp">存款</a><br><a href="cun.jsp">取款</a><br><a href="zhuan.jsp">转账</a><br></body></html><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><body><form action='dozhuan' method='post'>请您输入要转账的用户<br><input type='text' name='youname' value=''><br>请您输入要转账的金额<br><input type='text' name='zhuanbal' value=''><br><input type='submit' value='确认'></form></body></html>
学习总结:
学懂的:
深入理解了一次会话和一次请求的区别,深入理解了3个内置对象的作用域
pageContext application request
有问题的地方:
中间产生的方法太多,需要后面购物系统的练习和理解。
