<%@ page contentType="text/html;charset=gb2312" %>
 <html>
 <h1>计算器</h1>
 <br>
 <hr>
 <head>
 <script language="javascript">
 //写一个函数用来验证用户是不是空提交
 function checkNum()
 {
 <!--
     //判断num1是否为空
     if (form1.num1.value == "") {
         window.alert("num1不能为空!");
         return false;
     }

     //验证是否为一个数
     if (Math.round(form1.num1.value) != form1.num1.value) {
         window.alert("num1不是一个整数");
         return false;
     }
 -->
 }
 </script>
 </head>
 <body>
 <%
 //得到第一个数
     String g_num1 = request.getParameter("num1");
     String g_num2 = request.getParameter("num2");
     String flag = request.getParameter("flag");
     //res要放在外边定义,不然下面的<%=res%>访问不到
         ;
     if (g_num1 != null && g_num2 != null && flag != null) {
         int num1 = Integer.parseInt(g_num1);
         int num2 = Integer.parseInt(g_num2);
         res = ;

         if (flag.equals("+")) {
             res = num1 + num2;
         } else if (flag.equals("-")) {
             res = num1 - num2;
         } else if (flag.equals("*")) {
             res = num1 * num2;
         } else {
             res = num1 / num2;
         }
         String result = res + "";
     }
 %>
 <form name="form1", action="myCal.jsp">
 please input the first number:<input type="text" name="num1"><br>
 <select name="flag">
 <option value=+>+</option>
 <option value=->-</option>
 <option value=*>*</option>
 <option value=/>/</option>
 </select>
 <br>
 please input the second number:<input type="text" name="num2"><br>
 <input type="submit" value="Calculate", onclick="return checkNum()"><br>
 </form>
 <hr>
 结果为<%=res%>
 </body>
 </html>

简单计算器

//向一个界面发送数据可以用

session: 在服务器为客户端存放的一块内存。类型:<string, object>(名字,值)

session占服务器内存,一般不往session,保持用户信息,保持购物车

JSP的动作元素:

<jsp:include page=""/>(标记) 与  <% @include file="test.jsp" %> (指令)

include指令时在JSP容器转换JSP时将包含的内容插入到当前页面文件,也称静态包含;

include标记是在JSP页面执行过程中将包含页面的执行结果插入到当前页面的执行结果中,也称动态包含。

文件上传:

   <form action="uploadProcess.jsp" enctype="multipart/form-data" method="post">
         选择文件:<input type="file" name="fname">
         <input type="submit" value="上传">
     </form>
 <!-- 通过调用request对象的getInputStream()方法获得输入流对象,然后从输入流中读取数据并保存在文本文件upload.txt中。   -->
 <%
          ServletInputStream sis = request.getInputStream();
          String filePath = application.getRealPath("/upload.text");
          FileOutputStream fos = new FileOutputStream(filePath);
          int len = sis.read();
          System.out.println(filePath);
          ) {
              fos.write(len);
              len = sis.read();
          }
       %>

文件下载:

 <%
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=upload.jsp");

            InputStream is = application.getResourceAsStream("upload.jsp");
            ServletOutputStream os = response.getOutputStream();
            int len = is.read();
            ) {
                os.write(len);
                len = is.read();
            }
            os.close();
            is.close();
     %>

实现验证码

 <%
         response.setContentType("image/jpeg");

         //生成一个图片
         ;
         ;
         String sourceNum = "abcdefghijklmnopqrstuvwxyz";
         String sigleNum = "";
         String checkNum = "";
         ; i < ; i++) {
             ) % ;
             sigleNum = sourceNum.substring(index, index + );
             checkNum += sigleNum;
         }
         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
         Graphics g = image.getGraphics();
         g.setColor(Color.white);
         g.fillRect(, , width, height);
         g.setColor(Color.black);
         g.setFont());
         g.drawString(checkNum, , );

         ; i < height; i = i + ) {
             ; j < ; j++) {
                 int y = (int) (width * Math.random() % width);
                 g.drawLine(y, i, y, i);
             }
         }

         g.dispose();
         //输出到客户端
         ImageIO.write(image, "JPEG", response.getOutputStream());
      %>

JSP学习记录的更多相关文章

  1. 我的Spring学习记录(五)

    在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...

  2. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  3. Struts2学习记录-Value Stack(值栈)和OGNL表达式

    仅仅是学习记录.把我知道的都说出来 一.值栈的作用 记录处理当前请求的action的数据. 二,小样例 有两个action:Action1和Action2 Action1有两个属性:name和pass ...

  4. jsp学习:jsp学习阶段性总结2019.9.21

    Jsp学习 jsp语法格式: 脚本程序:<% 代码片段 %> jsp声明:<%! declaration; [ declaration; ]+ ... %> 表达式:<% ...

  5. 学习记录-java基础部分(一)

    学习记录-java基础部分(一) 参考:GitHub上的知名项目:javaGuide : https://github.com/Snailclimb/JavaGuide/blob/master/doc ...

  6. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  7. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  8. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  9. JSP学习网站

    JSP学习网站 http://www.yiibai.com/jstl/ http://www.w3cschool.cc/jsp/jsp-jstl.html

随机推荐

  1. vuex2.0 基本使用(1) --- state

    Vuex 的核心是 store, 它是一个通过 Vuex.Store 构造函数生成的对象.为什么它会是核心呢?因为我们调用这个构造函数创建store 对象的时候,给它传递参数中包装了state, mu ...

  2. git bash 下操作文件及文件夹命令

    1, cd : change directory的简写,改变目录的意思,就是切换到哪个目录下, 如 cd e:\fff  切换 E 盘下面的fff 目录. 当我们用cd 进入文件夹时,我们可以使用 通 ...

  3. UVA 12171 Sculpture

    https://vjudge.net/problem/UVA-12171 题目 某人设计雕塑,用的是很扯的方法:把一堆长方体拼起来.给出长方体的坐标和长宽高,求外表面积.因为要将这雕塑进行酸洗,需要知 ...

  4. Linux下的好用的编辑软件Remarkable

    Linux下的好用的编辑软件Remarkable最近着手开始学习Linux,就想着找一款好用的编辑器作笔记,在网上爬了些贴选择了Remarkable.官网崩了,有没有梯子,废了好大力气才装好.于是把资 ...

  5. Git简介及安装

    1 Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码 ...

  6. 五一培训 清北学堂 DAY2

    今天还是冯哲老师的讲授~~ 今日内容:简单数据结构(没看出来简单qaq) 1.搜索二叉树 前置技能 一道入门题在初学OI的时候,总会遇到这么一道题.给出N次操作,每次加入一个数,或者询问当前所有数的最 ...

  7. Codeforces340 E. Iahub and Permutations

    Codeforces题号:#340E 出处: Codeforces 主要算法:思维+DP 难度:4.8 题意: 有一个长度为$n$的排列(即各元素互不相同),其中有一些为-1.现要求将数填到这些-1上 ...

  8. Verilog定义计算位宽的函数clogb2

    在很多情况下要计算输入输出的位宽,比如你写一个8*8的ram,那么地址需要三位去表示,那么这个函数的方便就体现出来了,你需要使用函数定义就好了,如果对于多文件可以包含定义的文件: 如果你的DEPTH是 ...

  9. 使用IDEA部署项目到远程服务器

    1.选择Tools -> Deployment -> Configuration... 2.配置连接信息,Linux服务器一般都选择SFTP 3.配置本地上传文件路径.远程上传文件路径 4 ...

  10. navicat激活

    参考:https://www.jianshu.com/p/5f693b4c9468 一开始想激活12.1.8,但是激活按钮一直点不了,换了个12.0激活成功