综合案例【session、context、filter、listener...】

07320170911

可以改进的几点:

1、显示表单头部和尾部等一样的内容可以单独抽离出来,在每个页面进行<%@include file="header.jsp" %> 切入。

2、对登陆验证信息进行友好提示。

3、页面保护,可以直接写一个session.jsp,在需要保护的页面进行<%@include file="session.jsp" %> 切入。

4、代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




   
   
--登陆--


	<%
		int rand = (int) (Math.random() * 9000 + 1000);
		String check = String.valueOf(rand);
		session.setAttribute("check", check);
	%>
	
   
   

---欢迎登陆---

用户名:

密码:

验证码:

( <%=check%> )

<%@page import="java.util.Collections"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.tiger.bean.Goods"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> --商品列表-- <% String username = (String) session.getAttribute("username"); List good_list = (ArrayList ) application.getAttribute("good_list"); %>

用户名:<%=username%>   注销

---商品列表---
选择商品编号商品名价格
<% for (Goods g : good_list) { %>
<%=g.getId()%><%=g.getName()%><%=g.getPrice()%>
<% } %>
<%@page import="java.util.ArrayList"%> <%@page import="com.tiger.bean.Goods"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> --购物车-- <% String username = (String) session.getAttribute("username"); List goods_list = (ArrayList ) application .getAttribute("goods"); %>

用户名:<%=username%>   注销

---购物车列表---
选择商品编号商品名价格
<% if (goods_list != null) { for (Goods g : goods_list) { %>
<%=g.getId()%><%=g.getName()%><%=g.getPrice()%>
<% } } %>
package com.tiger.servlet; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; import com.tiger.bean.Goods; /** * 07320170911 * 登陆 * @author tiger * @Date 2017年9月10日 */ @WebServlet("/login") public class Login extends HttpServlet { private static final long serialVersionUID = 1L; public Login() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext application = getServletContext(); HttpSession session = request.getSession(); String username = request.getParameter("username"); String password = request.getParameter("password"); String check = request.getParameter("check"); String check_rand = (String)session.getAttribute("check"); if("tiger".equals(username) && "123456".equals(password) && check.equals(check_rand)){ //只有用户输入登录信息正确,才设置session【表示登陆在线状态】,给过滤器判断 session.setAttribute("username", username); //验证通过后,定向到商品列表页面 response.sendRedirect("goods_list.jsp"); }else{ response.sendRedirect("login.jsp"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }package com.tiger.servlet; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; import com.tiger.bean.Goods; /** * 注销 * @author tiger * @Date 2017年9月10日 */ @WebServlet("/logout") public class Logout extends HttpServlet { private static final long serialVersionUID = 1L; public Logout() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); //清除登陆session session.removeAttribute("username"); //重定向回登陆页面 response.sendRedirect("login.jsp"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }package com.tiger.servlet; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; import com.tiger.bean.Goods; /** * 添加商品 * @author tiger * @Date 2017年9月10日 */ @WebServlet("/addGoods") public class AddGoods extends HttpServlet { private static final long serialVersionUID = 1L; public AddGoods() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] checkbox = request.getParameterValues("checkbox"); if (checkbox != null) { ServletContext application = request.getServletContext(); List good_list = (ArrayList ) application.getAttribute("good_list"); ArrayList goods = new ArrayList<>(); for (Goods good : good_list) { for (String checkId : checkbox) { Integer check = Integer.parseInt(checkId); if (check == good.getId()) { goods.add(good); } } } //显示购物车列表时所用 application.setAttribute("goods", goods); //定向到购物车页面 response.sendRedirect("car_list.jsp"); }else { response.sendRedirect("login.jsp"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }package com.tiger.servlet; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; import com.tiger.bean.Goods; /** * 删除商品 * @author tiger * @Date 2017年9月10日 */ @WebServlet("/deleteGoods") public class DeleteGoods extends HttpServlet { private static final long serialVersionUID = 1L; public DeleteGoods() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] checkbox = request.getParameterValues("checkbox"); if (checkbox != null) { ServletContext application = request.getServletContext(); List good_list = (ArrayList ) application .getAttribute("goods"); for (int i = 0;i < good_list.size();i++) { for (String checkId : checkbox) { Integer check = Integer.parseInt(checkId); if (good_list.get(i).getId() == check) { good_list.remove(good_list.get(i)); } } } //显示购物车列表时所用 application.setAttribute("goods", good_list); //定向到购物车页面 response.sendRedirect("car_list.jsp"); }else { System.out.println("---没有选择到要删除的商品---"); response.sendRedirect("car_list.jsp"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }package com.tiger.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 我的过滤器,除了登陆页面不过滤,其余都过滤 * @author tiger * @Date 2017年9月7日 */ @WebFilter(urlPatterns = {"/*"}) public class MyFilter implements Filter { public MyFilter() { } public void destroy() { System.out.println("MyFilter.destroy()"); } /** * 过滤器的核心方法 */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse resp = (HttpServletResponse)response; //获取请求的servlet映射路径 String servlet_path = req.getServletPath(); if (!servlet_path.equals("/login") && !servlet_path.equals("/login.jsp")) { //session String username_session = (String) req.getSession().getAttribute("username"); //判断是否处于在线状态 if (username_session != null) { //在线,则放行 chain.doFilter(request, response); }else { //不在线则返回登陆页面 resp.sendRedirect("login.jsp"); } }else { //提交的uri不是/login和/login.jsp时,则放行 chain.doFilter(request, response); } } public void init(FilterConfig fConfig) throws ServletException { System.out.println("MyFilter.init()"); } } package com.tiger.listener; import java.util.*; import javax.servlet.*; import javax.servlet.annotation.WebListener; import com.tiger.bean.Goods; /** * 监听器:初始化信息 * @author tiger * @time 2017年9月11日 */ @WebListener public class MyListener implements ServletContextListener { public MyListener() { } public void contextDestroyed(ServletContextEvent sce) { System.out.println("MyListener.contextDestroyed()"); } /** * 项目已启动就加载初始化商品列表信息 */ public void contextInitialized(ServletContextEvent sce) { //数据源,实际中是在数据库 Goods[] goods = { new Goods(0, "吉利", 60000.00), new Goods(1, "宝马", 660000.00), new Goods(2, "奔驰", 550000.00), new Goods(3, "兰博基尼", 4500000.00), new Goods(4, "法拉利", 2200000.00), new Goods(5, "大众", 130000.00) }; List good_list = new ArrayList (); //添加进集合中 Collections.addAll(good_list, goods); sce.getServletContext().setAttribute("good_list", good_list); System.out.println("---初始化商品列表数据 success!---"); } } package com.tiger.bean; import java.io.Serializable; /** * javabean的标准写法 * @author tiger * @Date 2017年9月10日 */ public class Goods implements Serializable{ private Integer id; private String name; private double price; /** * @param id * @param name * @param price */ public Goods(Integer id, String name, double price) { super(); this.id = id; this.name = name; this.price = price; } public Goods() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "Good [id=" + id + ", name=" + name + ", price=" + price + "]"; } }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ljt-tiger

thanks

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值