首页 > 基础资料 博客日记
JSP实用教程实验四内置对象
2024-04-16 05:00:05基础资料围观404次
本篇文章分享JSP实用教程实验四内置对象,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
实验四 内置对象
一、实验目的
1. 掌握request对象。
2. 掌握response对象。
3. 掌握session对象。
4. 掌握application对象。
5. 掌握out对象。
6. 掌握每一个内置对象的内容及作用域和生命周期,熟练运用内置对象。
二、实验内容
1、教材4.6.1节 196算法之谜。
2、教材4.6.2节 计算器。
3、教材4.6.3节 单词的频率。
4、教材4.6.4节 成绩与饼图。
5、教材4.6.5节 记忆测试。
三、实验步骤
1.196算法之谜
①实验代码
文件ch4_1.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding ="utf-8" %>
<style>
#tomStyle{
font-family:宋体;font-size:36;color:blue
}
</style>
<HTML>
<body id=tomStyle bgcolor = #ffccff>
<form action="ch4_2.jsp" method=post name=form>
输入一个正整数数:<br>
<input type=text name="number" id=tomStyle size=16 value = 520 />
<br><input type="submit" id=tomStyle value="提交" />
</form>
</body>
</HTML>
文件ch4_2.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import = "java.math.BigInteger" %>
<HTML>
<body bgcolor = cyan>
<p style="font-family:宋体;font-size:36;color:black">
<%!
public static String reverse(String s) {
StringBuffer buffer = new StringBuffer(s);
StringBuffer reverseBuffer = buffer.reverse();
return reverseBuffer.toString();
}
%>
<%
String regex = "[1-9][0-9]*";
String startNumber=request.getParameter("number");
if(startNumber==null||startNumber.length()==0) {
startNumber = "520";
}
if(!startNumber.matches(regex)) {
response.sendRedirect("ch4_1.jsp");
return;
}
long step = 1;
BigInteger number = new BigInteger(startNumber);
BigInteger reverseNumber = new BigInteger(reverse(number.toString()));
BigInteger resultNumber = number.add(reverseNumber);
out.print("<br>"+number+"+"+reverseNumber+"="+resultNumber);
BigInteger p = new BigInteger(reverse(resultNumber.toString()));
while(!resultNumber.equals(p)) {
number = new BigInteger(resultNumber.toString());
reverseNumber = new BigInteger(reverse(number.toString()));
resultNumber = number.add(reverseNumber);
p = new BigInteger(reverse(resultNumber.toString()));
out.print("<br>"+number+"+"+reverseNumber+"="+resultNumber);
step++;
}
out.print("<br>"+step+"步得到回文数:"+resultNumber);
%>
</p>
</body>
</HTML>
②运行结果
2.计算器
①实验代码
文件ch4_3.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
<body bgcolor = #ffccff>
<form action="ch4_4.jsp" method=post name=form>
<p style="font-family:宋体;font-size:18;color:blue">
输入运算数、选择运算符号:<br>
<input type=text name="numberOne" size=6/>
<select name="operator" >
<option selected="selected" value="+">加
<option value="-">减
<option value="*">乘
<option value="/">除
</select>
<input type=text name="numberTwo" size=6 />
<br><input type="submit" name="submit" value="提交" />
</form>
</p>
</body>
</HTML>
文件ch4_4.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
<body bgcolor = cyan>
<p style="font-family:宋体;font-size:18;color:black">
<%
String numberOne=request.getParameter("numberOne");
String numberTwo=request.getParameter("numberTwo");
String operator=request.getParameter("operator");
if(numberOne==null||numberOne.length()==0) {
response.sendRedirect("ch4_3.jsp");
return;
}
else if(numberTwo==null||numberTwo.length()==0) {
response.sendRedirect("ch4_3.jsp");
return;
}
try{
double a=Double.parseDouble(numberOne);
double b=Double.parseDouble(numberTwo);
double r=0;
if(operator.equals("+"))
r=a+b;
else if(operator.equals("-"))
r=a-b;
else if(operator.equals("*"))
r=a*b;
else if(operator.equals("/"))
r=a/b;
out.print(a+""+operator+""+b+"="+r);
}
catch(Exception e){
out.println("请输入数字字符");
}
%>
</body>
</HTML>
②运行结果
3.单词的频率
①实验代码
文件ch4_5.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
<style>
#textStyle{
font-family:宋体;font-size:23;color:blue
}
</style>
<body bgcolor = #ffccff>
<p id = "textStyle">输入英文文章,单击提交键:
<%
String content = "We are student,are you student?";
%>
<form action="ch4_6.jsp" method=post name=form>
<textArea name="english" id = "textStyle" rows=5 cols=38><%= content %></textArea>
<br><input type="submit" name="submit" id = "textStyle" value="提交"/>
</form>
</p>
</body>
</HTML>
文件ch4_6.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.util.regex.Matcher" %>
<HTML>
<body bgcolor = cyan>
<p style="font-family:宋体;font-size:25;color:black">
<%!
class Word {
String englishWord;
int count ;
public boolean equals(Object o) {
Word wd=(Word)o;
return englishWord.equals(wd.englishWord);
}
}
%>
<%
request.setCharacterEncoding("utf-8");
String englishText=request.getParameter("english");
ArrayList<Word> wordList = new ArrayList<Word>();
Pattern pattern;
Matcher matcher;
String regex="[a-zA-Z]+" ;
pattern = Pattern.compile(regex);
matcher = pattern.matcher(englishText);
int allWordAmount = 0;
while(matcher.find()) {
String str = matcher.group();
allWordAmount++;
Word wd = new Word();
wd.englishWord = str;
if(!wordList.contains(wd)) {
wordList.add(wd);
wd.count = 1;
}
else {
int index = wordList.indexOf(wd);
wd = wordList.get(index);
wd.count += 1;
}
}
int diffrentWords = wordList.size();
Iterator<Word> ite = wordList.iterator();
out.print("出现了"+ allWordAmount+"个单词:<br>");
out.print("使用了"+ diffrentWords+"个不相同的单词:<br>");
while(ite.hasNext()) {
Word wd = ite.next();
double fq =(double)(wd.count)/allWordAmount;
String frequency =String.format("%.2f",fq);
out.print("<br>"+wd.englishWord+"频率(保留2位小数)"+frequency);
}
%>
</p>
</body>
</HTML>
②运行结果
4.成绩与饼图
①实验代码
文件ch4_7.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
<body bgcolor = #ffccff>
<style>
#textStyle{
font-family:宋体;font-size:18;color:blue
}
</style>
<p id="textStyle">
<form action="ch4_8.jsp" method=post >
输入考试有关数据:<br>
考试人数:<input type="text" name="totalStudents" value=1 size=12 /><br>
90~100人数:<input type="text" name="student90" value=1 size=12 /><br>
80~89人数:<input type="text" name="student80" value=1 size=12 /><br>
70~79人数:<input type="text" name="student70" value=1 size=12 /><br>
60~69人数:<input type="text" name="student60" value=1 size=12 /><br>
0~59人数:<input type="text" name="student59" value=1 size=12 /><br>
<input type="submit" name="submit" id="textStyle" value="看成绩分析"/><br>
<input type="submit" name="submit" id="textStyle" value="看成绩饼图"/>
</form>
</p>
</body>
</HTML>
文件ch4_8.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.geom.*" %>
<%@ page import="javax.imageio.ImageIO" %>
<% request.setCharacterEncoding("utf-8");
String submitValue = request.getParameter("submit");
String totalStudents = request.getParameter("totalStudents");
String students90 = request.getParameter("student90");
String students80 = request.getParameter("student80");
String students70 = request.getParameter("student70");
String students60 = request.getParameter("student60");
String students59 = request.getParameter("student59");
int students90_number = Integer.parseInt(students90);
int students80_number = Integer.parseInt(students80);
int students70_number = Integer.parseInt(students70);
int students60_number = Integer.parseInt(students60);
int students59_number = Integer.parseInt(students59);
int totalStudents_number = Integer.parseInt(totalStudents);
boolean isRight = totalStudents_number == students90_number+students80_number+
students70_number+students60_number+students59_number ;
if(isRight == false) {
response.sendRedirect("ch4_7.jsp");
return;
}
double percent90 = (double)students90_number/totalStudents_number;
double percent80 = (double)students80_number/totalStudents_number;
double percent70 = (double)students70_number/totalStudents_number;
double percent60 = (double)students60_number/totalStudents_number;
double percent59 = (double)students59_number/totalStudents_number;
double angSt = 0;
double angExt = 0;
int x = 450,y =50;
if(submitValue.equals("看成绩饼图")){
response.setContentType("image/jpeg");
int width=1000, height=500;
BufferedImage image =
new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.fillRect(0, 0, width, height);
Graphics2D g_2d=(Graphics2D)g;
Arc2D arc=new Arc2D.Double(0,0,400,400,0,360,Arc2D.PIE);
arc.setAngleStart(angSt);
angExt = -percent59*360;
arc.setAngleExtent(angExt);
g_2d.setFont(new Font("",Font.PLAIN,22));
g_2d.setColor(Color.black);
g_2d.drawString("黑色不及格",x,y);
g_2d.fillRect(x+150,35,30,15);
g_2d.fill(arc);
angSt = -percent59*360;
angExt = -percent60*360;
arc.setAngleStart(angSt);
arc.setAngleExtent(angExt);
g_2d.setColor(Color.green);
g_2d.drawString("绿色为60-69",x,y=y+30);
g_2d.fillRect(x+150,65,30,15);
g_2d.fill(arc);
angSt = -(percent59*360+percent60*360);
angExt = -percent70*360;
arc.setAngleStart(angSt);
arc.setAngleExtent(angExt);
g_2d.setColor(Color.yellow);
g_2d.drawString("黄色为70-79",x,y=y+30);
g_2d.fillRect(x+150,95,30,15);
g_2d.fill(arc);
angSt = -(percent59*360+percent60*360+percent70*360);
angExt = -percent80*360;
arc.setAngleStart(angSt);
arc.setAngleExtent(angExt);
g_2d.setColor(Color.blue);
g_2d.drawString("蓝色为80-89",x,y=y+30);
g_2d.fillRect(x+150,125,30,15);
g_2d.fill(arc);
angSt = -(percent59*360+percent60*360+percent70*360+percent80*360);
angExt = -percent90*360;
arc.setAngleStart(angSt);
arc.setAngleExtent(angExt);
g_2d.setColor(Color.pink);
g_2d.drawString("粉色为90-100",x,y=y+30);
g_2d.fillRect(x+150,155,30,15);
g_2d.fill(arc);
try {
OutputStream outClient= response.getOutputStream();
boolean boo =ImageIO.write(image,"jpeg",outClient);
}
catch(Exception exp){}
}
%>
<HTML>
<body bgcolor = #EEEEFF>
<p style="font-family:宋体;font-size:18;color:blue">
<%
String percent90Result = String.format("%.3f%%",percent90*100);
String percent80Result = String.format("%.3f%%",percent80*100);
String percent70Result = String.format("%.3f%%",percent70*100);
String percent60Result = String.format("%.3f%%",percent60*100);
String percent59Result = String.format("%.3f%%",percent59*100);
%>
<b>成绩百分比分布(保留3位小数)<br>
90~100分:<%=percent90Result %><br>
80~89分:<%=percent80Result %><br>
70~79分:<%=percent70Result %><br>
60~69分:<%=percent60Result %><br>
不及格:<%=percent59Result %><br>
</p>
</body>
</HTML>
②运行结果
5.记忆测试
①实验代码
文件ch4_9.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
<body bgcolor = #ffccff>
<style>
#textStyle{
font-family:宋体;font-size:26;color:blue
}
</style>
<form action="ch4_10.jsp" id ="textStyle" method=post name=form>
<input type=radio name="grade" value="5" />初级
<input type=radio name="grade" value="7" checked="ok" />中级
<input type=radio name="grade" value="10" />高级
<br><input type="submit" name="submit" id ="textStyle" value="提交"/>
<input type="reset" id ="textStyle" value="重置" />
</form>
</body>
</HTML>
文件ch4_10.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Random" %>
<HTML>
<body bgcolor = #ffccff>
<style>
#textStyle{
font-family:宋体;font-size:36;color:blue
}
</style>
<%!
static ArrayList<String> list = new ArrayList<String>();
static {
list.add("☆");
list.add("○");
list.add("△");
list.add("□");
list.add("◇");
}
String getNextTestString(int length) {
StringBuffer buffer = new StringBuffer();
Random random = new Random();
for(int i=0;i<length;i++) {
int index = random.nextInt(list.size());
String str = list.get(index);
buffer.append(str);
}
return new String(buffer);
}
%>
<%
String grade = request.getParameter("grade");
if(grade == null){
grade =(String) session.getAttribute ("grade");
}
int number = Integer.parseInt(grade);
session.setAttribute ("grade" ,grade);
String testString = null;
String yesORNo = null;
yesORNo = (String)session.getAttribute ("yesORNo");
if(yesORNo == null) {
testString = getNextTestString(number);
session.setAttribute ("yesORNo" ,"yes");
session.setAttribute ("testString" ,testString);
}
else if(yesORNo.equals("yes")){
response.sendRedirect("ch4_11.jsp");
return;
}
else if(yesORNo.equals("no")){
testString = getNextTestString(number);
session.setAttribute ("yesORNo" ,"yes");
session.setAttribute ("testString" ,testString);
}
%>
<p id = "textStyle">给5秒种记住您看到的字符序列:<br>
<%=testString %>
<br>5秒种后,将转到答题页。
<% response.setHeader("refresh","5");
%>
</p>
</body>
</HTML>
文件ch4_11.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
<body bgcolor = #ffccff>
<style>
#textStyle{
font-family:宋体;font-size:26;color:blue
}
</style>
<form action="ch4_12.jsp" id = textStyle method=post >
<%
int n =Integer.parseInt((String)session.getAttribute ("grade"));
session.setAttribute ("yesORNo" ,"no");
for(int i=1;i<=n;i++){
out.print("<br>第"+i+"个字符:");
out.print("<input type=radio name=R"+i+" value='☆'/>☆"+
"<input type=radio name=R"+i+" value='○' />○"+
"<input type=radio name=R"+i+" value='△' />△"+
"<input type=radio name=R"+i+" value='□' />□"+
"<input type=radio name=R"+i+" value='◇' />◇");
}
%>
<br><input type="submit" name="submit" id ="textStyle" value="提交"/>
<input type="reset" id ="textStyle" value="重置" />
</form>
</body>
</HTML>
文件ch4_12.jsp:
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
<body bgcolor = white >
<p style="font-family:宋体;font-size:26;color:blue">
<%
session.setAttribute ("yesORNo" ,"no");
request.setCharacterEncoding("utf-8");
int n =Integer.parseInt((String)session.getAttribute ("grade"));
StringBuffer buffer = new StringBuffer();
for(int i=1;i<=n;i++){
buffer.append(request.getParameter("R"+i)); //获取radio提交的值
out.print(""+request.getParameter("R"+i));
}
String userAnswer = new String(buffer);
String testString = (String)session.getAttribute ("testString");
if(testString.equals(userAnswer)){
out.print("您记忆不错");
}
else {
out.print("您没记忆住额!答案是:<br>"+testString);
}
%>
<br><a href = "ch4_10.jsp">返回,继续练习记忆</a>
<br><a href = "ch4_9.jsp">重新选择级别</a>
</p>
</body>
</HTML>
②运行结果
四、实验总结
本次实验通过五个小实验学习了Jsp中内置对象request获取from内的数据进行提交,使用了response对象实现重定向。并使用response对象改变MIME类型,最后一个实验使用了session对象存储用户的数据,以及使用response对象实现重定向和添加新的响应头。
文章来源:https://blog.csdn.net/Annzz123/article/details/131292990
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: