分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

8 ??EL、JSTL、MVC、购物车、验证码

发布时间:2023-09-06 01:42责任编辑:彭小芳关键词:MVC验证码
1.EL表达式

 目的:从作用域中取出共享数据 ??${p.属性名称} ?使用EL获取当前应用的上下文路径 ?????${pageContext.getRequest().getContextPath()} ?判断集合是否为空: ??????${empty list}:表示判断List既不能等于null,并且有元素,才会返回false

2.JSTL标签(消除jsp中的java代码)

 ?拷贝jar包:jstl.jar ??standard.jar <%@ taglib uri="" prefix=""%> ??常用标签库: ??????判断语句标签: ????????<c:if test="${num==10}">等于10</c:if> ??????循环迭代标签: ????????<c:forEach ?items="${numList}" var="item"> ???????${item} ????</c:forEach> ??????日期格式化标签: ??????<fmt:formatDate value="${d}" pattern="yyyy-MM-dd HH:mm:ss"/>

3.MVC思想

 Model1:jsp+javaBean(职责不分明) Model2:JSp+Servlet+JavaBean(责任分离) MVC: ????M:Model:数据模型对象(封装数据,处理业务逻辑):javaBean V:View :展示界面,显示数据 C:控制器(接收所有请求和界面跳转):Servlet ?????MVC框架:Struts2/SpringMVC

4.简单的购物车设计:

 ??1):使用Session来完成.把购物车对象存放于Session中. ?????缺陷:浏览器关闭,session被销毁,购物车就消失了. ??2):可以使用Cookie完成.把购物车对象存储于Cookie中. ?????缺陷:Cookie中的数据只能存在在当前电脑的当前浏览器中. ??3):Cookie+数据库. ??????如果登录: 就直接把购物车对象信息存到到数据库中(持久化存储). ??????没有登录: 先把数据存储在Cookie中,一旦登录,就直接吧Cookie中的数据同步到数据库中

5.验证码

 ?一次性验证码的主要目的就是为了限制人们利用工具软件暴力猜测密码 ???1.将随机数据存储到Session中,用于和用户提交的随机码进行比对2.将随机码绘制成图片通过Servlet响应到浏览器
 ?<%@ page language="java" contentType="text/html; charset=UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><script type="text/javascript"> ???function change(){ ???????var img = document.getElementById("randomCodeImg"); ???????img.src="/randomCode?"+new Date().getTime(); ???}</script><body> ???<h1>登录页面</h1> ???<div style="color: red">${errorMsg}</div> ???<form action="/login" method="post"> ???????用户:<input type="text" name="username"><br> ???????密码:<input type="password" name="password"><br> ???????验证码:<input type="text" name="randomCode" size="5" maxlength="5"> ???????<img ?id="randomCodeImg" src="/randomCode" onclick="change()" style="cursor: pointer;" title="看不清,换一张"><br> ???????<input type="submit" value="登录"> ???</form></body></html>

@WebServlet("/randomCode")
public class RandomCodeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void service(HttpServletRequest req, HttpServletResponse resp) ???????throws ServletException, IOException { ???//生成随机数 ???String randomCode = UUID.randomUUID().toString().substring(0, 5); ???//把随机数放进Session中 ???req.getSession().setAttribute("RANDOMCODE_IN_SESSION", randomCode); ???//创建图片对象 ???int width = 80; ???int height = 40; ???int imageType = BufferedImage.TYPE_INT_RGB; ???BufferedImage image = new BufferedImage(width, height, imageType); ???//画板 ???Graphics g = image.getGraphics(); ???g.setColor(Color.YELLOW); ???//绘制一个实心的矩形 ???g.fillRect(1, 1, width - 2, height - 2); ???//把随机数画进图片中 ???g.setColor(Color.BLACK);//设置随机数的颜色 ???Font font = new Font("宋体", Font.BOLD + Font.ITALIC, 20); ???g.setFont(font);//设置随机数的字体和大小 ???g.drawString(randomCode, 10, 28); ???//干扰线 ???g.setColor(Color.GRAY); ???Random r = new Random(); ???for (int i = 0; i < 100; i++) { ???????g.fillRect(r.nextInt(width), r.nextInt(height), 1, 2); ???} ???//关闭 ???g.dispose(); ???//把图片对象以流的方式保存出去 ???ImageIO.write(image, "jpg", resp.getOutputStream());}

}

@WebServlet("/login")public class LoginServlet extends HttpServlet { ???private static final long serialVersionUID = 1L; ???@Override ???protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ???????req.setCharacterEncoding("utf-8"); ???????resp.setContentType("text/html;charset=utf-8"); ???????//接受请求参数 ???????String username = req.getParameter("username"); ???????String password = req.getParameter("password"); ???????String randomCode = req.getParameter("randomCode");
 ???//先校验验证码是否正确 ???//获取Sesion中的验证码 ???String sessionInCode = (String)req.getSession().getAttribute("RANDOMCODE_IN_SESSION"); ???if(!randomCode.equals(sessionInCode)){ ???????req.setAttribute("errorMsg", "亲,您输入验证码不正确"); ???????req.getRequestDispatcher("/randomcode/login.jsp").forward(req, resp); ???????return; ???} ???//做其他的业务(验证账号密码) ???System.out.println("验证码验证通过,可以进行其他业务了");}

}

8 ??EL、JSTL、MVC、购物车、验证码

原文地址:http://blog.51cto.com/10913595/2071329

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved