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
随机推荐
- codeforces484A
Bits CodeForces - 484A Let's denote as the number of bits set ('1' bits) in the binary representati ...
- Dijkstra—校园景点游览问题
#include<iostream> #include<cstdio> #include<cstring> #define MAX 9999999 using na ...
- Nagios故障 CHECK_NRPE: Socket timeout after 10 seconds.
Nagios 的警报信息如下,意思是 nrpe 进程执行某些脚本超过了 10 秒钟,就会发警报 CHECK_NRPE: Socket timeout after 10 seconds 修改 comma ...
- Codeforces Round #449 (Div. 1) Willem, Chtholly and Seniorious (ODT维护)
题意 给你一个长为 \(n\) 的序列 \(a_i\) 需要支持四个操作. \(1~l~r~x:\) 把 \(i \in [l, r]\) 的 \(a_i\) 加 \(x\) . \(2~l~r~x: ...
- Hdoj 1785.You Are All Excellent 题解
Problem Description 本次集训队共有30多人参加,毫无疑问,你们都是很优秀的,但是由于参赛名额有限,只能选拔部分队员参加省赛.从学校的角度,总是希望选拔出最优秀的18人组成6支队伍来 ...
- 【BZOJ4911】[SDOI2017]切树游戏(动态dp,FWT)
[BZOJ4911][SDOI2017]切树游戏(动态dp,FWT) 题面 BZOJ 洛谷 LOJ 题解 首先考虑如何暴力\(dp\),设\(f[i][S]\)表示当前以\(i\)节点为根节点,联通子 ...
- 查看Ubuntu的显卡信息
lspci -vnn|grep VGA -A 12 查看openGL信息: sudo apt install mesa-utils glxinfo|grep OpenGL -A 12
- Age of Moyu HDU - 6386 (杭电多校7A)
给出n和点,m条边,每条边有各自的标号,进入第一个标号需要消耗1的费用,此后转换标号需要1费用,在同一个标号上走不需要费用.问你从1到n最少需要多少费用. 最短路变形,把第一个点看成不存在的标号,然后 ...
- 【git】git一些命令使用记录
目前git版本控制很多公司都在用,我把平时的使用做些记录,防止忘记. 1. 有时候分支比较多,我们会基于master建立一个新分支开发,有时候也会基于别的分支建立,但时间长了可能会忘记当前分支是基于哪 ...
- CF1131F Asya And Kittens(Kruskal重构树,启发式合并)
这题难度1700,我感觉又小了…… 这题虽然没几个人是用kruskal重构树的思想做的,但是我是,所以我就放了个kruskal重构树的标签. 题目链接:CF原网 题目大意:有一个长为 $n$ 的排列, ...