<%@ 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. java基础1之基本数据类型

    java的数据类型 整数型(byte.short.int.long) 编程过程中,默认是int类型.long类型的字面值后面需要加上L或l PS:java底层,byte.short是按照32位计算的. ...

  2. Linux编译静态库与共享库

    静态库: cc  -c   mod1.c  mod2.c //编译 ar   r     libdemo.a   mod1.o   mod2.o //生成静态库 cc  -c   prog.c //编 ...

  3. SpringMVC 复杂对象数据绑定

    表单在 web 页面上无处不在,有些表单可能很复杂,大部分表单里的输入项都会对应后端对象属性.SpringMVC 可以自动将表单值绑定到对象上!而且能绑定很复杂的对象!!这里就不写那些基本的表单绑定了 ...

  4. MySQL 同一台服务器同步数据

    声明:我配置出来的slave_io_running和slave_sql_running都是yes.但是数据并没有同步! 希望有遇到相同问题的朋友,能够告诉我一下解决方案? 首先,如何在同一个服务器安装 ...

  5. Educational Codeforces Round 62 (Rated for Div. 2)

    A. Detective Book 题意:一个人读书  给出每一章埋的坑在第几页可以填完 . 一个人一天如果不填完坑他就会一直看 问几天能把这本书看完 思路:模拟一下 取一下过程中最大的坑的页数  如 ...

  6. P1091 合唱队形 最长上升子序列

    思路:最长上升子序列 正着做一遍 倒着做一遍 然后 取最大值 #include<bits/stdc++.h> using namespace std; const int maxn=105 ...

  7. android打电话方法(直接拨通)

    新建了CallPhone方法,如下: private void CallPhone() { String number = et_number.getText().toString(); if (Te ...

  8. github上的面试库

    https://yuchengkai.cn/docs/zh/frontend/#%E5%86%85%E7%BD%AE%E7%B1%BB%E5%9E%8B https://github.com/taiz ...

  9. Win10 安装 Linux子系统 Ubuntu18.04 / Kali Linux 的体验

    汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#linux 几年前就看到新闻,今天周末,突发奇想,家里电脑安装下子系统不就不用安装开发的那些环 ...

  10. Android 新架构组件 -- WorkManager

    Android WorkManager compile "android.arch.work:work-runtime:1.0.0-alpha02" 继承Worker类并实现doW ...