8 EL、JSTL、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("验证码验证通过,可以进行其他业务了");
}

}

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

时间: 2024-10-06 01:37:42

8 EL、JSTL、MVC、购物车、验证码的相关文章

EL&amp;JSTL

EL&JSTL(重要) 一.EL技术 1.EL表达式概述 EL(Express Language)表达式可以嵌入jsp页面内部,建设jsp脚本的编写,EL出现的目的是要替代jsp页面脚本的编写.(不能进行逻辑运算) 2.EL从域中取出数据(EL最重要的作用(90%以上)) EL最主要的作用是获得四大域中的数据,格式${EL表达式} EL获得pageContext域中的值:${pageContextScope.key);} EL获得request域中的值:${requestScope.key);}

JavaEE之动态页面技术(JSP/EL/JSTL)

动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print() 3)<%!java代码%> ---- 会被翻译成servlet的成员的内容 jsp注释:  不同的注释可见范围是不同 1)Html注释:<!--注释内容--> ---可见范围 jsp源码.

12-JSP&amp;EL&amp;JSTL

JSP & EL & JSTL jsp Java Server Page 什么是jsp 从用户角度看待 ,就是是一个网页 , 从程序员角度看待 , 其实是一个java类, 它继承了servlet,所以可以直接说jsp 就是一个Servlet. 为什么会有jsp? html 多数情况下用来显示静态内容 , 一成不变的. 但是有时候我们需要在网页上显示一些动态数据, 比如: 查询所有的学生信息, 根据姓名去查询具体某个学生.  这些动作都需要去查询数据库,然后在网页上显示. html是不支持写

动态页面技术(JSP/EL/JSTL)

一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print() 3)<%!java代码%> ---- 会被翻译成servlet的成员的内容 jsp注释:  不同的注释可见范围是不同 1)Html注释:<!--注释内容--> ---可见范围 jsp源码.翻译后的servlet.页面  

JavaWeb学习之动态页面技术(JSP/EL/JSTL)

JSP技术 1.jsp脚本和注释 jsp脚本: 1.<% java代码%>    内部的Java代码翻译到service方法的内部 2.<%=java 变量或表达式%>    会被翻译成service方法内部out.print() 3.<%! java 代码%>    会被翻译成servlet的成员(成员变量或者成员方法)的内容 jsp注释:不同的注释可见范围是不同的 1.Html注释:<!--注释内容-->     可见范围有jsp源码.翻译后的servl

jsp&amp;el&amp;jstl

一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print() 3)<%!java代码%> ---- 会被翻译成servlet的成员的内容 jsp注释:  不同的注释可见范围是不同 1)Html注释:<!--注释内容--> ---可见范围 jsp源码.翻译后的servlet.页面 显

(一)【转】asp.net mvc生成验证码

网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中. 在ASP.NET网站中应用验证码是很容易的,网上有很多的解决方案.最近在做一个OA项目,因系统采用的ASP.NET MVC框架,同样在登录页中需用到验证码,故需将原来在ASP.NET网站中使用的验证码移植到ASP.NET MVC中. 原ASP.NET网站用来生成验证码的类文件ValidateCode.

MVC下验证码

验证码技术是目前很多WEB程序采用的一种安全防御技术,主要用于防止使用软件程序自动和批量提交表单.MvcCaptcha是应用于ASP.NET MVC Web应用程序中的验证码控件,功能强大,使用简单方便,生成的验证码图片效果如下: MvcCaptcha的主要特点: 支持自定义验证码图片的字体扭曲程度(None, Low, Medium, High, Extreme五级)和图片中的文本个数: 支持自定义验证码图片的背景杂色级别(None, Low, Medium, High, Extreme五级)

aspx与mvc页面验证码

验证码类代码 using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespac

MVC生成图片验证码,可指定位数

前台: <h2>mvc后台生成验证码,可指定位数</h2> <img id="gc" src="GetValidateCode" onclick="this.src='GetValidateCode?r=' + Math.random()" /> <button onclick="javascript:document.getElementById('gc').src='GetValidateC