《学习内容》:
//========学习内容=========
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");
@Override
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 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--value
request.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
有问题的地方:
中间产生的方法太多,需要后面购物系统的练习和理解。