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
随机推荐
- 动态sql and在前 逗号在后
- Cent OS安装使用ffmpeg(完整版)
Cent OS安装使用ffmpeg centos作为主流后台linux 系统,ffmpeg作为视频流解析的主力,尤其是ffmpeg配合opencv使用,则是视觉操作的基础 版本: ffmpeg3.1 ...
- I - Tunnel Warfare HDU - 1540 线段树最大连续区间
题意 :一段区间 操作1 切断点 操作2 恢复最近切断的一个点 操作3 单点查询该点所在最大连续区间 思路: 主要是push_up : 设区间x 为母区间 x<<1 ,x< ...
- Android大学课件SQLite3 数据库操作
一.数据库介绍 SQLite3:当有大量相似结构的数据需要存储的时候 . 其实SQLite3 就是一个文件,类似之前学过的MySQL SqlServer等. 二.SQLiteOpenHelper 是一 ...
- 【XSY2779】最小表示串 KMP DP polya定理
题目描述 给你一个字符串\(s\),问你有多少个串是最小表示串且字典序\(\leq s\) \(|s|\leq 1000\) 题解 先把\(s\)变成比\(s\)小的最大的最小表示串.方法是从后枚举每 ...
- requirements文件
将一个环境中安装的所有的包在另一个环境中安装 1.生成文件列表 pip freeze > requirements.txt 2.将该文件放入到新环境中,安装 pip install -r req ...
- Ubuntu解压
tar -zxvf FileName.tar.gz tar -jxvf FileName.tar.bz2 unzip FileName.zip sudo dpkg -i 文件名.deb
- 【C++】实现一个简单的单例模式
- while(~scanf(..))为什么可以这样写
因为读到文件的结束符时,scanf返回值是EOF,也就是-1,而~(-1)的作用就是对-1的按位取反. 在计算机中,数字按补码存储,正数的补码和原码一样,负数的补码是其反码+1,反码也就是符号位仍为1 ...
- IntelliJ IDEA快捷键总结
原文: IntelliJ IDEA快捷键 下面只列出Windows系统下的快捷键,Mac下的快捷键参考上面的链接. Remember these Shortcuts 功能 快捷键 Smart code ...