JSP学习记录
<%@ 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学习记录的更多相关文章
- 我的Spring学习记录(五)
在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- Struts2学习记录-Value Stack(值栈)和OGNL表达式
仅仅是学习记录.把我知道的都说出来 一.值栈的作用 记录处理当前请求的action的数据. 二,小样例 有两个action:Action1和Action2 Action1有两个属性:name和pass ...
- jsp学习:jsp学习阶段性总结2019.9.21
Jsp学习 jsp语法格式: 脚本程序:<% 代码片段 %> jsp声明:<%! declaration; [ declaration; ]+ ... %> 表达式:<% ...
- 学习记录-java基础部分(一)
学习记录-java基础部分(一) 参考:GitHub上的知名项目:javaGuide : https://github.com/Snailclimb/JavaGuide/blob/master/doc ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- JSP学习网站
JSP学习网站 http://www.yiibai.com/jstl/ http://www.w3cschool.cc/jsp/jsp-jstl.html
随机推荐
- jQuery 操作input select,checkbox
input $("#add_device_owner_id").val() $("#add_device_owner_id").val("d" ...
- BZOJ4482[Jsoi2015]套娃——贪心+set
题目描述 [故事背景] 刚从俄罗斯旅游回来的JYY买了很多很多好看的套娃作为纪念品!比如右 图就是一套他最喜欢的套娃J.JYY由于太过激动,把所有的套娃全 部都打开了.而由于很多套娃长得过于相像,JY ...
- BZOJ2738 矩阵乘法(整体二分+树状数组)
单个询问二分答案即可,多组询问直接整体二分再二维BIT.注意保证复杂度. #include<iostream> #include<cstdio> #include<cma ...
- ElasticHD Linux环境下安装
ElasticHD Linux环境下安装教程 ElasticHD windows环境下安装教程 上一篇讲了ElasticHD windows环境下安装,这一篇继续说明ElasticH ...
- K - Transformation HDU - 4578 线段树经典题(好题)
题意:区间 加 变成定值 乘 区间查询:和 平方和 立方和 思路:超级超级超级麻烦的一道题 设3个Lazy 标记分别为 change 改变mul乘 add加 优先度change>m ...
- 微信小程序Dom事件实现
面对微信小程序,可能没有像我们平时使用JQuery那样随心所欲.本篇就是为了解决这个问题. 请合理使用工具! 细节就不说了,直接备份一个实现的案例: wxml <view class=" ...
- 爬虫_腾讯招聘(xpath)
和昨天一样的工作量,时间只用了一半,但还是效率有点低了,因为要把两个网页结合起来,所以在列表操作上用了好多时间 import requests from lxml import etree heade ...
- 【题解】 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)
题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: ...
- 实验六 MapReduce实验:二次排序
实验指导: 6.1 实验目的基于MapReduce思想,编写SecondarySort程序. 6.2 实验要求要能理解MapReduce编程思想,会编写MapReduce版本二次排序程序,然后将其执行 ...
- [SDOI2011]计算器(BSGS)
洛古题面 对于操作一,用快速幂算即可 代码如下 int quickpow(int a,int b,int k) { int r=1; while(b) { if(b&1) r=(r*a)%k; ...