实验二 JSP应用开发基础---掌握JSP基本语法

本文介绍了JSP的基础知识,包括脚本元素、指令元素和动作元素的使用,以及request、response、out、session、application等内置对象的实践。通过实例展示了计算阶乘和、静态包含文件、动态包含与重定向以及根据用户输入处理数据的JSP程序。实验旨在提升对JSP编程的理解和应用能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验二 JSP应用开发基础

掌握JSP基本语法。
脚本元素(SCRIPTING)
(1)隐藏注释(Hidden Comment)
<%-- 这是客户端不可见的注释 --%>
(2)声明(Declaration)
<%!这是声明%>
(3)脚本段(ScriptLets)
<%这是脚本段 %>
(4)表达式(Expression)
<%=这是表达式 %>
指令元素(DIRECTIVE)
(1)<%@ page %>
(2)<%@ include %>
动作元素(ACTION)
(1)jsp:forward
(2)jsp:include
(3)jsp:param
(4)jsp:getProperty
(5)jsp:setProperty
(6)jsp:useBean

掌握JSP常用的9种内置对象中的request、response、out、session、application
对象的基本使用方法。

2实验内容:(代码只粘贴核心代码,每个程序不超过1页,运行结果请截图)

1、编写一个JSP程序,计算1!+2!+3!+4!+5!,并显示出结果。要求先声明计算阶乘的方法,再调用该方法,最后在页面上输出结果。
进阶要求,通过表单提交一个正整数,然后计算它的阶乘和。例如:输入3,就计算1!+2!+3!。

代码:

<%@ page contentType="text/html; charset=GBK"%>
<!DOCTYPE html>
<html>
<head>
<title>求阶乘和!</title>
</head>
<body bgcolor=grey>
<h3>请输入1100之间的整数:</h3>
<form action="index.jsp" method="get" name="form">
<input type="text" name="number">
<input type="submit" name="submit" value="提交">
</form>
<%!int sss(int i)
{
    if(i==1)
    {
        return 1;
    }
    return i*sss(i-1);
}int ss(int i)
{
    if(i==1)
    {
        return 1;
    }
    return sss(i)+ss(i-1);
}
int s(int i)
{

        return i;
}
%>
<%
String str=request.getParameter("number");
if(str !=null){
	try{
		int num;
		num= Integer.parseInt(str);
%>
<h2><p>你输入n的数值:<cite><%=s(num)%></cite></p></h2>
<h1><p>阶乘之和的结果:<cite><%=ss(num)%></cite></p></h1>
<%	}catch(NumberFormatException e){
		e.printStackTrace();
	}
}
%>
</body>
</html>

运行结果:
在这里插入图片描述

2、在JSP页面中静态包含文件。要求程序包含两个文件,主文件静态包含一个能够计算1到1000内的完数的页面。(如果一个正整数刚好等于它的真因子之和,这样的正整数为完数, 例如,6=1+2+3,因此6就是一个完数。)
代码:

1.html文件

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>这个是静态的!</title>
</head>
<body bgcolor=salmon>
<a href="1.jsp"%></a>
<br><cite>请输入11000之间的整数:</cite><br><br>
<form action="1.jsp" method="get" name="form">
  <input type="text" name="number">
  <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

1.jsp文件

<%@ page contentType="text/html; charset=GBK"%>
<!DOCTYPE html>
<html>
<head>
  <title>求完数!!!</title>
</head>
<body bgcolor=peru>
<p>请输入11000之间的整数:
<form action="1.jsp" method="get" name="form">
  <input type="text" name="number">
  <input type="submit" name="submit" value="提交">
</form>
<%!int sss(int i)
{
  int s=0;
  for(int j=1;j<i;j++)
    if(i%j==0)
      s=s+j;
  if(s==i)
    return 1;
  if(s!=i)
    return 0;
  return 2;
}
  int s(int i)
  {
    if(i>0&&i<1000)
      return 1;
    else
      return 0;
  }
%>
<%
  String str=request.getParameter("number");
  if(str !=null){
    try{
      int num;int ww;ww=0;
      num= Integer.parseInt(str);
      if(s(num)==1){			%>
<h3>你输入的数:<cite><%out.println(num);%></cite>[1,1000]的范围里面!</h3>
<%			}
else{			%>
<h2>你输入的数:<%out.println(num);%>不在[1,1000]的范围里面!</h2>
<%			}
%>
<p> </p>
<%

  if(sss(num)==1){
%>
<h1>很幸运!!!这个数是完数!</h1>
<%
}
else{
%>
<h1>十分抱歉,这个数不是完数!</h1>
<%}
}
catch(NumberFormatException e){
  e.printStackTrace();
  out.println("12345");
}
}
%>
</body>
</html>

运行结果:
在这里插入图片描述
在这里插入图片描述

3、动态包含页面并传递数据。要求程序包含两个文件,主文件加载次文件,并将随机产生的50~100之间的数据传递给它,并且在页面上显示两个信息:该数据和这个数据的平方根。
进阶要求,把动态包含改为动态重定向,比较两者之间的区别。
代码:

3-1.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>随机数以及平方根</title>
</head>
<body >
<%@ page import="java.util.Random"%>
<%
    Random rand = new Random();
    double type = rand.nextInt(50)+50;
%>
<p>
<h3>主页面生成的随机数是:<%
    out.println(type);
%></h3>

<jsp:include page="3-2.jsp" flush="true">
    <jsp:param name="type" value="<%=type%>"/>
</jsp:include>
<%
    double num;
    String str=request.getParameter("type");
    if(str !=null)
        try{
%>
<%
        }
        catch(NumberFormatException e)
        {
            e.printStackTrace();
        }
%>
<p>
</body>
</html>

3-2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>here</title>
</head>
<p>
        <%
double num;num=0;
String s=request.getParameter("type");
num=Double.parseDouble(s);
if(s !=null)
	try{
		%>
<p>
<h2>传过来的随机数是:
    <%out.println(""+s+"");
    %></h2>
<%
        }
        catch(NumberFormatException e)
        {
            e.printStackTrace();
        }
%>
<body>
<h1><p><%=num%>的平方根是:<%=Math.sqrt(num) %>
    <br>上面这个是被调用的界面</p></h1>
</body>
</html>

运行结果:

在这里插入图片描述

4、本题包括4个JSP程序,one.jsp、two.jsp、three.jsp、error.jsp。
one.jsp具体要求如下:
要求one.jsp页面有一个表单,用户使用该表单可以输入一个1至100之间的整数,并提交给下一个页面;如果输入的整数在50至100之间(不包括50)就转向three.jsp,如果在1至50之间就转向two.jsp;如果输入不符合要求就转向error.jsp。要求forward标记在实现页面转向时,使用param子标记将整数传递到转向的two.jsp或three.jsp页面,将有关输入错误传递到转向的error.jsp页面
two.jsp、three.jsp和error.jsp的具体要求如下:
要求two.jsp和three.jsp能输出one.jsp传递过来的值,并显示一幅图像,该图像的宽和高刚好是one.jsp页面传递过来的值。error页面能显示有关抛出的错误信息。(程序中使用的图片,可自行准备)。
代码:

One.jsp

<%@ page contentType="text/html; charset=GBK"%>
<!DOCTYPE html>
<html>
<head>
    <title>4个网页</title>
</head>
<body>
<p>请输入1100之间的整数:
<form action="one.jsp" method="get" name="form">
    <input type="text" name="number">
    <input type="submit" name="submit" value="提交">
</form>
<%
    String str=request.getParameter("number");
    if(str !=null){
        try{
            int num;
            num = Integer.parseInt(str);

            if(num>=1&&num<=50){
%>
<jsp:forward page="two.jsp">
    <jsp:param name="str" value="<%=num %>"/>
</jsp:forward>
<%}
else if(num>50&&num<=100)
{
%><jsp:forward page="three.jsp">
    <jsp:param name="str" value="<%=num %>"/>
</jsp:forward>
<% }
else if(num>100||num<=0)
{
%><jsp:forward page="error.jsp">
    <jsp:param name="str" value="<%=num %>"/>
</jsp:forward>
<% }
}
catch(Exception e)
{
%><jsp:forward page="error.jsp">
    <jsp:param name="mess" value="<%=e.toString()%>"/>
</jsp:forward>
<% 	}
}
%>
</body>
</html>

Two…jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
</head>
<body >
<%
    String s=request.getParameter("number");
%>
<h1>传递过来的数值:<cite><%out.println(s);%></cite></h1>
<h3>图片大小就是:<cite><%out.println(s);%></cite></h3>
<div>
    <img src="./images/裴秀智1.jpg" width="<%=s%>" height="<%=s%>">

</div>

</body>
</html>

Three.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
</head>
<body >
<%
    String s=request.getParameter("number");
%>
<h1>传递过来的数值:<cite><%out.println(s);%></cite></h1>
<h3>图片大小就是:<cite><%out.println(s);%></cite></h3>

    <img src="./images/gir3.jpg" width="<%=s%>" height="<%=s%>">



</body>
</html>

Error.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body bgcolor=red>
<%
String s=request.getParameter("number");
%>
<h3>您的输入:   <cite><%out.println(s);%></cite></h3>
<br>
<h1>该输入不符合要求!请输入1~1000之间的数值</h1>
<br><img src="C:\Users\HWP\Desktop\2\err.jpg" width="<%=s%>" height="<%=s%>"</img>

</body>
</html>

运行结果:
在这里插入图片描述

在这里插入图片描述

3小结

通过该次实验,有助于我(有几项填几项,不要空白),在编写程序中遇到的主要问题及解决方法是什么?
1、img的src地址要用相对地址,不要用绝对地址,不然会显示不出来图片
2、在idea下编辑代码ctrl s保存后,在浏览器ctrl r可以实时刷新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甲乙zzu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值