JSP作业(二)
- 格式:doc
- 大小:165.50 KB
- 文档页数:13
JSP应用与开发技术第二版课后练习题含答案前言JSP(Java Server Pages)是一种基于Java技术的动态网页开发技术。
它允许Java代码和特定JSP标记混合在一起,从而实现了动态生成HTML、XML等网页文件的功能。
JSP应用与开发技术是JSP的入门教材,本书包括了大量的案例和练习,本文将重点介绍课后练习题,并提供答案供参考。
课后练习题1. 什么是JSP?列举JSP的优点和缺点。
答案:JSP(Java Server Pages)是一种基于Java技术的动态网页开发技术,它允许Java代码和特定JSP标记混合在一起,从而实现了动态生成HTML、XML等网页文件的功能。
以下是JSP的优点:•可以结合Java代码实现动态网页生成,具有高度的灵活性;•基于Java技术,具有跨平台、安全性高、能与其他开发技术互通等优点;•模板化的编写方式,提高了代码的可读性和维护性;•可以方便地与Java Web框架集成。
以下是JSP的缺点:•JSP容易出现逻辑与视图耦合的问题;•JSP中可能存在HTML、CSS等前端技术和Java代码的混合,不利于前后端分离;•JSP代码较为复杂,不利于开发效率。
2. 请列举JSP的指令。
答案:JSP有三种指令,分别是page指令、include指令和taglib指令。
•page指令:定义网页的属性和导入相关包;•include指令:用于把其他文件(例如HTML、JSP等)包含进当前的文件中;•taglib指令:用于导入标签库,方便重用标签。
3. 请列举JSP中的注释标记。
答案:注释标记是JSP中的一种特殊标识符,用于标记JSP页面中的注释信息。
JSP中的注释标记分为两种:•HTML注释:<!–这是HTML注释– >•Java注释:<%–这是Java注释–%>4. 请列举JSP中的一些隐含对象,并简要介绍其作用。
答案:JSP中的隐含对象是指可以直接在JSP代码中访问的默认对象,不需要进行任何声明和初始化操作。
JSP作业4-2编写一个实现页面计数的计数器,要求当刷新页面时,不增加计数。
程序代码<%@ page contentType="text/html;charset=gb2312"%><%!int num=0;synchronized void add(){num++;}%><html><head><title>计数器</title></head><body><%if(session.isNew())add();%><center>您是第<%=num%>位访问该页的游客!</center></body></html>截图4-3编写一个简易购物车,实现向购物车内添加商品,移除指定商品及清空购物车功能。
程序代码<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.util.ArrayList"%><%!int m=0;int Id=8888;ArrayList<String> goodslist = new ArrayList<String>();ArrayList<Float> pgoodslist = new ArrayList<Float>();ArrayList<String> buylist=new ArrayList<String>();ArrayList<Float> pbuylist=new ArrayList<Float>();ArrayList<Integer> nbuylist=new ArrayList<Integer>();%><%float total=0; %><%if(Id==8888){goodslist.add(0,"荔枝");goodslist.add(1,"火龙果");goodslist.add(2,"西瓜");goodslist.add(3,"柚子");pgoodslist.add(0,8.8f);pgoodslist.add(1,9.6f);pgoodslist.add(2,5.2f);pgoodslist.add(3,4.8f);}%><%session.setAttribute("goodslist",goodslist);session.setAttribute("pgoodslist",pgoodslist);%><table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr height="50"><td colspan="3" align="center">提供商品如下</td></tr><td>名称</td><td>价格(元/斤)</td><td>购买</td><%session.getAttribute("goodslist");session.getAttribute("pgoodslist"); %><%if(goodslist==null||goodslist.size()==0){%><tr height="100"><td colspan="3" align="center">没有商品可以显示</td></tr><%}else{for(int m=0;m<goodslist.size();m++){%><tr height="50" align="center"><td><%=goodslist.get(m) %></td><td><%=pgoodslist.get(m) %></td><td><a href="index.jsp?id=<%=m+1%>">购买</a></td></tr><% }}%></table>********************************************************************* *****<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr align="center" height="30" bgcolor="lightgrey"><td>名称</td><td>价格</td><td>数量</td><td>总价</td><td>移除</td></tr><%String str=request.getParameter("id");if(str==null||str.equals(""))str="0";try{Id=Integer.parseInt(str);}catch(NumberFormatException e){Id=0;e.printStackTrace();}%><%if(Id==1){if(buylist.size()==0){buylist.add(0,goodslist.get(0));pbuylist.add(0,pgoodslist.get(0));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k).equals(goodslist.get(0))){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(0));pbuylist.add(k,pgoodslist.get(0));nbuylist.add(k,1);}}}if(Id==2){if(buylist.size()==0){buylist.add(0,goodslist.get(1));pbuylist.add(0,pgoodslist.get(1));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k).equals(goodslist.get(1))){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(1));pbuylist.add(k,pgoodslist.get(1));nbuylist.add(k,1);}}}if(Id==3){if(buylist.size()==0){buylist.add(0,goodslist.get(2));pbuylist.add(0,pgoodslist.get(2));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k)==goodslist.get(2)){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(2));pbuylist.add(k,pgoodslist.get(2));nbuylist.add(k,1);}}}if(Id==4){if(buylist.size()==0){buylist.add(0,goodslist.get(3));pbuylist.add(0,pgoodslist.get(3));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k)==goodslist.get(3)){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(3));pbuylist.add(k,pgoodslist.get(3));nbuylist.add(k,1);}}}if(Id==10){if(nbuylist.get(0)>1){int h=nbuylist.get(0);nbuylist.set(0,h-1);}else if(nbuylist.get(0)==1){buylist.remove(0);pbuylist.remove(0);nbuylist.remove(0);}}if(Id==20){if(nbuylist.get(1)>1){int h=nbuylist.get(1);nbuylist.set(1,h-1);}else if(nbuylist.get(1)==1){buylist.remove(1);pbuylist.remove(1);nbuylist.remove(1);}}if(Id==30){if(nbuylist.get(2)>1){int h=nbuylist.get(2);nbuylist.set(2,h-1);}else if(nbuylist.get(2)==1){buylist.remove(2);pbuylist.remove(2);nbuylist.remove(2);}}if(Id==40){if(nbuylist.get(3)>1){int h=nbuylist.get(3);nbuylist.set(3,h-1);}else if(nbuylist.get(3)==1){buylist.remove(3);pbuylist.remove(3);nbuylist.remove(3);}}if(Id==888888){buylist.clear();pbuylist.clear();nbuylist.clear();total=0;}if(buylist==null||buylist.size()==0){%><tr height="100"><td colspan="5" align="center">您的购物车为空</td></tr> <%}else{for(int l=0;l<buylist.size();l++){String name=buylist.get(l);float price=(float)pbuylist.get(l);int num=(int)nbuylist.get(l);float money=((int)((price*num+0.05f)*10))/10f;total+=money;%><tr align="center" height="50"><td><%=name %></td><td><%=price %></td><td><%=num %></td><td><%=money %></td><td><a href="index.jsp?id=<%=((l+1)*10 )%>">移除</a></td></tr><% }}%><tr height="50" align="center"><td colspan="5">应付金额:<%=total %></td></tr><tr height="50" align="center"><td colspan="3"><a href="index.jsp?id=888888">清空购物车</a></td></tr></table>截图5-3实现一个简单的登录程序。
实验报告实验课程网络数据库技术与应用实验项目5、期末考核大作业实验地点自行解决指导教师班级学生姓名学号教师评分日期6月21日一、实验目的1、对JSP网络数据库操作进行综合演练2、会开发简单的网络数据库应用系统二、准备●软件环境:Windows XP、JDK6、Tomcat●硬件环境:pc机、局域网三、实验内容按照步骤要求,选择以下任意一个题目完成,同时提交实验报告和源代码,打包以自己名字命名发送于17周前发送到老师邮箱:13267395@.题目1:用户登陆和用户管理系统开发要求:1.1、实现用户登录和密码验证功能1.2、实现用户注册功能,并能添加到数据库中1.3、实现用户信息的修改功能,如修改密码1.4、实现用户的删除功能题目2:新闻发布系统开发2.1、实现后台新闻发布功能,信息应存入数据库2.2、实现前台新闻展示浏览功能,新闻内容从数据库读取2.3、实现新闻修改功能,如修改新闻内容2.4、实现过时新闻删除功能题目3:产品发布系统开发3.1、实现后台产品信息发布功能,信息应存入数据库3.2、实现前台产品展示浏览功能,新闻内容从数据库读取3.3、实现产品信息修改功能,如修改新闻内容3.4、实现过时产品删除功能四、实验步骤及结果1、你所选的题目是:机电工程学院用户登陆和用户管理系统开发2、功能需求分析主要有三方面的功能:管理员登录功能,对学生的信息进行注册,对学生的信息进行修改,删除学生的信息。
3、数据库设计1)E-R图如下2)数据字典 Manager 表字段名称 数据类型 表示项目 备注 manager 文本 管理员账号 主键 password 数字管理员密码 Register 表字段名称 数据类型 表示项目 备注 id数字 学生学号 主键 password 数字 学生密码 name 文本 学生姓名 major 文本 专业phone数字电话号码管理员学生信息管理学号 密码姓名专业密码电话号码密码姓名用户MN4、关键技术说明连接数据库的代码try{//连接数据库Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载JDBC-ODBC桥驱动程序Connection connt=DriverManager.getConnection( "jdbc:odbc:register","admin","xyz"); out.println("连接成功");//获取表单信息插入数据的代码<%String id = formatStr(request.getParameter("id"));String password = formatStr(request.getParameter("password"));String name=request.getParameter("name");byte c[] = name.getBytes("ISO-8859-1");name=new String(c);String major=request.getParameter("major");byte b[] = major.getBytes("ISO-8859-1");major=new String(b);String phone = formatStr(request.getParameter("phone"));out.println("学号:"+id);out.println("姓名:"+name);%><%//数据库连接代码片断://获得站点所在文件夹的路径try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载JDBC-ODBC桥驱动程序Connection connt=DriverManager.getConnection( "jdbc:odbc:register","admin","xyz"); out.println("连接成功");Statement stmt=connt.createStatement();String sql="insert into register values("+id+","+password+",'"+name+"','"+major+"',"+phone+")";int rs=stmt.executeUpdate(sql);out.println("数据插入成功!");}catch(Exception ex){out.println(ex.getMessage());}%>修改数据的代码<body><table width="660" height="48" border="1" align="center" cellpadding="0" bordercolorlight="#9370DB " cellspacing="2" bordercolor=" #FF6EC7 "><tr bgcolor="#32CD99 "><th><div align="center">学号</div></th><th><div align="center">密码</div></th><th><div align="center">姓名</div></th><th><div align="center">专业</div></th><th><div align="center">电话号码</div></th><th>操作</th></tr><%while(rs.next()){String id=rs.getString(1);%><tr bgcolor=" #CC3299 "><form name="<%=id%>" action="updateuser.jsp" method="post"><td><input type=text name=id value=<%=id%>></td><td><input type=text name=password value=<%=rs.getInt(2)%>></td><td><input type=text name=name value=<%=rs.getString(3)%>></td><td><input type=text name=major value=<%=rs.getString(4)%>></td><td><input type=text name=phone value=<%=rs.getInt(5)%>></td><td> <input type="submit" value="修改"></td></form></tr><%}String id=request.getParameter("id");String password=request.getParameter("password");String name=request.getParameter("name");byte b[]=name.getBytes("ISO-8859-1");name=new String(b);String major=request.getParameter("major");byte c[]=major.getBytes("ISO-8859-1");major=new String(c);String phone=request.getParameter("phone");//执行更新SQL语句Statement stmt=connt.createStatement();String sql="update register set id="+id+",password="+password+",name='"+name+"',major='"+major+"',phone="+phon e+" where id="+id+";";out.println("测试SQL<br>"+sql);int result=stmt.executeUpdate(sql);out.println("<br>数据修改OK");}catch(Exception ex){out.println(ex.getMessage());}%>删除数据的代码<html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; Charset=gb2312" /><title>信息更新</title></head><body><table width="660" height="48" border="1" align="center" cellpadding="0" bordercolorlight="#9932CD " cellspacing="2" bordercolor="#FFFFFF"><tr bgcolor=" #D9D919 "><th><div align="center">学号</div></th><th><div align="center">密码</div></th><th><div align="center">姓名</div></th><th><div align="center">专业</div></th><th><div align="center">电话号码</div></th><th>操作</th></tr><%while(rs.next()){String id=rs.getString(1);%><tr bgcolor=" #FF6EC7 "><form name="<%=id%>" action="deleteuser.jsp" method="post"><input type=hidden name=id value=<%=id%>><td><%=id%></td><td><%=rs.getInt(2)%></td><td><%=rs.getString(3)%></td><td><%=rs.getString(4)%></td><td><%=rs.getInt(5)%></td><td> <input type="submit" value="删除"></td> </form></tr><%}String id=request.getParameter("id");//执行更新SQL语句Statement stmt=connt.createStatement();String sql="delete from register where id="+id+";"; out.println("测试SQL<br>"+sql);int result=stmt.executeUpdate(sql);out.println("<br>数据删除OK");}catch(Exception ex){out.println(ex.getMessage());}%>5、源代码与系统演示(打包附上源代码即可)见源代码。
Jsp实习作业一.实现两个数求和1.实现过程描述:写一个界面在这个界面中我们输入要计算的两个数据,如果输入错误的话就是用清零来清除原来的数据然后在重新输入,然后通过求和按钮将数据提交到指定的界面也就是servlet 中通过request.getParameter(“name”)来取得输入的数据然后进行类型的转化在进行求和最后将所求的和输出到客户端,这时是一个标准的html文档,再通过浏览器将标准的html文档转化为一个可视化界面,也就是我们所看到的界面。
2.访问过程:上面写的额这个也就是一个小的项目,所以我们想知道上面的提交的过程是怎么一回事,怎么把输入的数据传到servlet中,在WEB-INF 中我们要建立一个class文件夹lib 文件夹和web.xml文件,其中classes文件夹中存放的是servlet被javac编译器编译后的.class文件在使用的过程中tomcat会调用这个文件的,而web.xml 中我们进行配置就是将访问的路劲进行配置,通过这个配置找到前面的class文件并把提交的数据获取进行相应的操作在输出:也就是执行浏览器中输入的地址:localhost:8080/first/test1.jsp ;3.实现代码:(1)数据输入提交代码:<%@page language ="java" contentType="text/html;chatset=GBK"%><html><head><title>hello first</title></head><body text="green"><form action ="tess" method="get"><center><h1>两个数求和</h1></center><h2>请输入数据:<input type ="text" name="username">+<input type ="text" name="password"></h2><center><h3><input type ="submit" value="求和"><input type ="reset" value="清零"></h3></center><hr></form><img src="D:\u=3514610321,2163395432&fm=23&gp=0.jpg.gif"></body></html>(2)配置文件代码:<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"version="3.0"metadata-complete="true"><servlet><servlet-name>firstname</servlet-name><servlet-class>servlett1</servlet-class></servlet><!--这里的名称就是要一样不然的话就找不到这个类在url中访问的时候就是将这个要访问的服务器的ip地址要访问的项目以及配置文件里的<url-pattern>/test</url-pattern>> 这里就是进行了映射--><servlet-mapping><servlet-name>firstname</servlet-name><url-pattern>/tess</url-pattern></servlet-mapping></web-app>(3)计算过程代码:sevlet.java文件即.class文件的源码:import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class servlett1 extends HttpServlet{public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{String username=request.getParameter("username");String passsword= request.getParameter("password");int num1=0;int num2=0;num1=Integer.parseInt(username);num2=Integer.parseInt(passsword);int sum=num1+num2;response.setContentType("text/html ;charset=GBK");response.getWriter().println("<html>");response.getWriter().println("<head>");response.getWriter().println("<title>");response.getWriter().println("新界面!");response.getWriter().println("</title>");response.getWriter().println("</head>");response.getWriter().println("<body>");response.getWriter().println("<h1>");response.getWriter().println(num1+"+"+ num2+"="+ sum);response.getWriter().println("</h1>");response.getWriter().println("<hr>");response.getWriter().println("<br>");response.getWriter().println("</body>");response.getWriter().println("</html>");}}4 运行界面:(1)数据输入界面:(2)求得结果界面:二.留言板:1.实现过程:实现过程的实质和上面的是相同的所以只是简单的描述一下;首先我们要建议一个留言板页面,在文本框中输入留言(使用了<textarea name="doc" row="10" clos="40"></textarea>)这个标签来实现,然后点击提交就将留言提交到servlet中,然后再通过服务器输出到客户端。
1.在<%! 和%>之间声明的变量为成员变量,在整个JSP页面内有效。
在<% 和%>之间的变量为局部变量,该局部变量在JSP页面后继得所有程序片以及表达是部分内有效。
4.<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><body><p>这是一个Tab文件负责计算100内的素数<%int i,jfor(i=2;i<=100;i++){int k=(int)Math.sqrt(i);for(j=2;j<=k;j++){if(i%j==0)break;}if(j>k){out.print(" "+i);}}%></body></html>5. 答: 1:启动DW,在【文件】窗口中合适的位置上单击右键,在弹出的菜单中选择【新建文件】,将新生成的JSP页面改名为a.jsp,双击打开供编辑。
JSP第2章附加题一、编写一个程序,使用LinkedList存储职员的姓名。
实现如下功能1)显示存储在LinkedList中的所有姓名。
2)搜索并显示以特定字符开始的职员姓名。
3)倒序显示LinkedList的内容二、编写学生类、学校类1)学生有学号、姓名、年龄、性别等属性。
2)学校有学校名称、学生列表(ArrayList类型)等属性。
学校有招生的方法,每次招一个学生,加入到学生列表中;其它方法有:查询所有学生的方法,根据姓名查询学生的方法,根据年龄查询学生的方法,根据性别查询学生的方法。
各查询方法要求输出符合查询条件的所有学生的详细信息。
3)编写测试类测试学校类的方法。
三、编写程序实现CD商店销售和购进CD。
编写CD类,包含CD名称、CD价格、CD的类别、该CD的数量。
编写CDShop类存放CD,以ArrayList的形式存放。
编写CD店的老板类;ShopMan,老板有一个CD商店,另有销售和购进CD的方法。
编写测试类测试老板销售和购进CD的方法。
JSP第3章附加题一、在SQL SERVER中创建学生表,使用JDBC实现学生的增删改查。
二、在SQL SERVER中创建学生表、班级表,使用JDBC实现学生和班级的增删改查。
要求在程序中实现级联删除,删除班级则删除该班学生;不要求实现事务。
三、在SQL SERVER中创建学生表、课程表、选课表,使用JDBC实现学生表、课程表、选课表的增删改查。
要求在程序中实现级联删除,删除学生或删除课程则删除对应的选课信息;要求将数据访问类与业务类分开;不要求实现事务。
JSP第4章附加题一、编写一个jsp页面exercise.jsp,要求:1)随意初始化一个数组,在浏览器上输出该数组的长度。
2)至少包含5种JSP页面元素(预习下一章)二、编写JSP,输出1的阶乘、2的阶乘、…、20的阶乘,输出效果如下1的阶乘是12的阶乘是2………20的阶乘是243290200817664000三、编写JSP输入2个10行10列的表格,第一个表格的每个格显示该格所在行列的和,第二个表格的每个格显示该格所在行和列的积JSP第5章附加题一、如果一个字符串和它的反序字符串一样,我们就说这个字符串是回文,现在要求编写一个jsp,去判断字符串是否是回文,并使用表格显示,显示效果如下图所示。
jsp程序设计教程习题答案JSP程序设计教程习题答案JSP(Java Server Pages)是一种用于开发动态Web应用程序的Java技术。
它允许开发人员在HTML页面中嵌入Java代码,从而实现动态内容的生成和交互。
本篇文章将为读者提供一些JSP程序设计的习题答案,帮助读者巩固和扩展自己的JSP编程技能。
1. 习题一:编写一个JSP页面,实现一个简单的计算器功能。
页面上应该包含两个输入框和一个按钮,当用户点击按钮时,计算器应该根据输入的数字执行加法运算,并将结果显示在页面上。
答案:```jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>计算器</title></head><body><form action="" method="post"><input type="text" name="num1" placeholder="请输入第一个数字" /><br><input type="text" name="num2" placeholder="请输入第二个数字" /><br> <input type="submit" value="计算" /></form><%if(request.getMethod().equals("POST")){int num1 = Integer.parseInt(request.getParameter("num1"));int num2 = Integer.parseInt(request.getParameter("num2"));int result = num1 + num2;out.println("计算结果:" + result);}%></body></html>```2. 习题二:编写一个JSP页面,实现一个简单的留言板功能。
jsp期末作业文档总结一、项目简介本次项目是基于JSP(Java Server Pages)技术开发的一个Web应用程序,旨在实现一个电子商务平台的原型。
通过该应用程序,用户可以浏览商品、下单购买、管理个人信息等功能。
二、项目背景随着互联网的发展,电子商务已经成为一种常见的购物方式。
为了满足用户购物的需求,并提供一站式的购物体验,开发一个电子商务平台是必要的。
而JSP作为一种基于Java 的Web开发技术,具有很好的可扩展性和高性能,非常适合开发这种类型的应用。
三、技术选型在本次项目中,我们选择使用JSP作为开发技术,同时结合Servlet、JavaBean等技术来实现不同的功能。
JSP可以嵌入Java代码,并且提供了丰富的标签库和表达式语言,使开发更加高效。
而Servlet则可以处理Http请求和响应,与JSP配合使用,可以实现动态网页的生成与展示。
JavaBean则被用来处理业务逻辑和数据传递。
四、功能设计1. 用户注册与登录功能:用户可以通过注册账号进行登录,系统将保存用户的个人信息和登录状态,并提供注销登录的功能。
2. 商品浏览功能:用户可以查看平台上的各类商品信息,包括名称、价格、数量等。
3. 商品购买功能:用户可以选择商品并加入购物车,然后结算并提交订单,系统会自动生成订单编号和支付金额。
4. 订单管理功能:用户可以查看自己的历史订单,并对订单进行操作,如确认收货、评价等。
5. 个人信息管理功能:用户可以修改个人信息,如昵称、头像等。
6. 管理员功能:管理员可以对商品、订单等信息进行管理,包括上架商品、修改价格等。
五、总体架构本项目的总体架构遵循MVC(Model-View-Controller)模式,将系统的不同功能进行分层处理。
模型(Model)负责处理业务逻辑和数据操作,视图(View)负责展示界面,控制器(Controller)负责接收和处理用户请求,并进行相应的分发。
六、开发流程1. 需求分析:根据项目要求和用户需求,明确功能和数据的需求,并确定系统的交互流程。
1.1、下列关于jsp指令描述正确的是_______A指令以“< %@”开始,以“%>”结束B指令以”<%”开始,以”%>”结束C指令以”<”开始,以”>”结束D指令以”<jsp:”开始,以”/>”结束1.2、jsp代码<%=”1+4”%>将输出_______A1+4B 5C14D不会输出,因为表达式是错误的1.3、下列选项中,_______是正确的jsp表达式A<%! Int a=0;%>B<% int a=0; %>C<%=(3+5);%>D<%=(3+5)%>1.4、page指令用于定义jsp文件中的全局属性,下列关于该指令用法的描述不正确的是_______A<%@page %>作用于整个jsp页面B可以在一个页面中使用多个<%@page %>指令C为增强程序的可读性,建议将<%@page %>指令放在jsp文件的开头,但不是必须的D<%@page %>指令的所有属性只能出现一次1.5、page指令的_______属性用于引用需要的包和类A extendsB importC isErrorPageD language1.6、JSP的Page编译指令的属性Language的默认值是:A、JavaB、 CC C#D SQL1.7、JSP的编译指令通常是指:A Page指令、Include指令和Taglib指令B Page指令、Include指令和Plugin指令C Forward指令、Include指令和Taglib指令D Page指令、Param指令和Taglib指令JSP的标准动作包括哪些?这些标准动作能完成什么功能?动态包含和静态包含区别。
编写两个文档,一个是JSP文档命名为myjsp.jsp,另一个是普通的HTML文档,命名为myphoto.html。
布置作业整体信息一,视图层(view)thwAddForm.jsp(1)存放位置/manage/hw(2)文件作用:作业整体信息的输入界面(3)显示课程名-------${cou_name}(4)输入控件命名作业名称name=”tea_hw_name”应交日期name=”tea_hw_expire”难易度name=”tea_hw_diff_easy”是否开启name=”tea_hw_open”布置日期(利用hidden控件传递name=”tea_hw_date”)(5)向控制器传递参数利用hidden传递name=”cou_no”value=”${param.cou_no}”Name=”cou_name” value=”cou_name”(6)关联控制器<form action=”/manage/hw/ThwAddAction”或<form action=” ThwAddAction”>二,控制器(controller)ThwAddFormAction1 命名tea.action.hw. ThwAddFormAction2 Mapping url:/manage/hw/ ThwAddFormAction3步骤:(1)获取参数:String 类型,cou_no(2)调用getCourseName()方法,获取编号为cou_no的课程名称(3)将课程名称存如request 命名为cou_name(4)跳转到thwAddForm.jspThwAddAction1 命名tea.action.hw.ThwAddAction2 Mapping url: /manage/hw/ThwAddAction3步骤(1)获取参数cou_no 表单的5个输入参数,存入Map对象(2)从session中获取当前登陆的教师的编号,存入Map对象(3)调用模型方法thwAdd(),添加作业的整体信息(4) 根据方法返回值,跳转到不同的目的地A 返回true调用模型中方法getMaxThwNo()获取作业编号存到request 命名”tea_hw_no”课程名称寸入request 命名”cou_name”跳转到ThwDetailAddFormActionB 返回flase 将出错信息存到request,命名messageInfo跳转到“/common/MessageAction”三,模型层(model)1 命名:tea.serice.TeaHomeworkService2 方法定义(1) thwAdd()作用:添加作业的整体信息方法头声明:public boolean thwAdd(HashMap thw)(2) getCourseName作用:根据课程编号,获取课程名称方法头声明:public String getCourseName(String cou_no)(3)getMaxThwNo()作用:获取当前的最大的作业编号方法头声明Public String getMaxThwNo()布置作业的详细信息一,视图层(1)命名:thwDetailAddForm.jsp(2)存放位置:/manage/hw(3)作用:作业详细信息输入界面(4)动态显示课程名-----${cou_name}题号-----第${proNo}题(5) 输入控件命名和数据表相应字段同名如:题目类型:name=”thd_type”题目内容:name=”thd_content”题目内容上传文件:name=”thd_file_name”题目提示:name=”thd_prompt”题目答案:name=”thd_answer”题目答案上传文件:name=”thd_file_answer_name”题目难易度:name=”thd_file_diff_easy”题目适用类型:name=”thd_stu_type”(6)向控制器额外传递参数<input type=”hidden” name=”cou_name”value=”${cou_name}”><input type=”hidden”name=”proNo” value=”${proNo}”><input type=”hidden” name=”tea_hw_no” value=”${tea_hw_no}”>(7) 关联控制器<form action=”ThwDetailAddAction”enctype=”mulipart/form-data”>二,控制器ThwDetailAddFormAction1 命名tea.action.hw. ThwDetailAddFormAction2 Mapping url:/manage/hw/ ThwDetailAddFormAction3 步骤(1) 从request对象中获取当前题号proNo,在当前题号的基础上增1,在存回到request对象中(2) 跳转到thwDetailAddForm.jspThwDetailAddAction1 命名:tea.action.hw. ThwDetailAddAction2 Mapping url:/manage/hw/ ThwDetailAddAction3 步骤(1)创建UploadUtil(tea.util)对象up(2)调用up对象upload()方法上传文件(3)根据upload()方法的返回值做不同处理A 上传成功获取表单中的输入参数,作业编号tea_hw_no 题目内容,题目答案上传文件原名和在服务器上的存放地址,存入Map对象B 若上传失败跳转到“/common/MessageAction”(4)调用模型中的thwDetailAdd()方法添加作业的详细信息(5)根据thwDetailAdd()方法返回值A 若返回true若点击“下一题”将作业编号,课程名称,题号存入request,命名tea_hw_no,cou_nameproNo跳转到“ThwDetailAddFormAction”若点击“结束”将成功信息保存到request,命名为messageInfo跳转到“/common/MessageAction”B 若返回false将出错信息存入request,命名messageInfo跳转到“/common/MessageAction”三,模型层tea.service.TeaHomeworkSerivice(1)thwDetailAdd()作用:添加作业详细信息方法头声明:public boolean thwDetailAdd(HashMap thd)。
JSP作业4-2编写一个实现页面计数的计数器,要求当刷新页面时,不增加计数。
程序代码<%@ page contentType="text/html;charset=gb2312"%><%!int num=0;synchronized void add(){num++;}%><html><head><title>计数器</title></head><body><%if(session.isNew())add();%><center>您是第<%=num%>位访问该页的游客!</center></body></html>截图4-3编写一个简易购物车,实现向购物车内添加商品,移除指定商品及清空购物车功能。
程序代码<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.util.ArrayList"%><%!int m=0;int Id=8888;ArrayList<String> goodslist = new ArrayList<String>();ArrayList<Float> pgoodslist = new ArrayList<Float>();ArrayList<String> buylist=new ArrayList<String>();ArrayList<Float> pbuylist=new ArrayList<Float>();ArrayList<Integer> nbuylist=new ArrayList<Integer>();%><%float total=0; %><%if(Id==8888){goodslist.add(0,"荔枝");goodslist.add(1,"火龙果");goodslist.add(2,"西瓜");goodslist.add(3,"柚子");pgoodslist.add(0,8.8f);pgoodslist.add(1,9.6f);pgoodslist.add(2,5.2f);pgoodslist.add(3,4.8f);}%><%session.setAttribute("goodslist",goodslist);session.setAttribute("pgoodslist",pgoodslist);%><table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr height="50"><td colspan="3" align="center">提供商品如下</td></tr><td>名称</td><td>价格(元/斤)</td><td>购买</td><%session.getAttribute("goodslist");session.getAttribute("pgoodslist"); %><%if(goodslist==null||goodslist.size()==0){%><tr height="100"><td colspan="3" align="center">没有商品可以显示</td></tr><%}else{for(int m=0;m<goodslist.size();m++){%><tr height="50" align="center"><td><%=goodslist.get(m) %></td><td><%=pgoodslist.get(m) %></td><td><a href="index.jsp?id=<%=m+1%>">购买</a></td></tr><% }}%></table>********************************************************************* *****<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr align="center" height="30" bgcolor="lightgrey"><td>名称</td><td>价格</td><td>数量</td><td>总价</td><td>移除</td></tr><%String str=request.getParameter("id");if(str==null||str.equals(""))str="0";try{Id=Integer.parseInt(str);}catch(NumberFormatException e){Id=0;e.printStackTrace();}%><%if(Id==1){if(buylist.size()==0){buylist.add(0,goodslist.get(0));pbuylist.add(0,pgoodslist.get(0));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k).equals(goodslist.get(0))){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(0));pbuylist.add(k,pgoodslist.get(0));nbuylist.add(k,1);}}}if(Id==2){if(buylist.size()==0){buylist.add(0,goodslist.get(1));pbuylist.add(0,pgoodslist.get(1));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k).equals(goodslist.get(1))){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(1));pbuylist.add(k,pgoodslist.get(1));nbuylist.add(k,1);}}}if(Id==3){if(buylist.size()==0){buylist.add(0,goodslist.get(2));pbuylist.add(0,pgoodslist.get(2));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k)==goodslist.get(2)){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(2));pbuylist.add(k,pgoodslist.get(2));nbuylist.add(k,1);}}}if(Id==4){if(buylist.size()==0){buylist.add(0,goodslist.get(3));pbuylist.add(0,pgoodslist.get(3));nbuylist.add(0,1);}else{int k=0;for(;k<buylist.size();k++){if(buylist.get(k)==goodslist.get(3)){int w=nbuylist.get(k);nbuylist.set(k,w+1);break;}}if(k>=buylist.size()){buylist.add(k,goodslist.get(3));pbuylist.add(k,pgoodslist.get(3));nbuylist.add(k,1);}}}if(Id==10){if(nbuylist.get(0)>1){int h=nbuylist.get(0);nbuylist.set(0,h-1);}else if(nbuylist.get(0)==1){buylist.remove(0);pbuylist.remove(0);nbuylist.remove(0);}}if(Id==20){if(nbuylist.get(1)>1){int h=nbuylist.get(1);nbuylist.set(1,h-1);}else if(nbuylist.get(1)==1){buylist.remove(1);pbuylist.remove(1);nbuylist.remove(1);}}if(Id==30){if(nbuylist.get(2)>1){int h=nbuylist.get(2);nbuylist.set(2,h-1);}else if(nbuylist.get(2)==1){buylist.remove(2);pbuylist.remove(2);nbuylist.remove(2);}}if(Id==40){if(nbuylist.get(3)>1){int h=nbuylist.get(3);nbuylist.set(3,h-1);}else if(nbuylist.get(3)==1){buylist.remove(3);pbuylist.remove(3);nbuylist.remove(3);}}if(Id==888888){buylist.clear();pbuylist.clear();nbuylist.clear();total=0;}if(buylist==null||buylist.size()==0){%><tr height="100"><td colspan="5" align="center">您的购物车为空</td></tr> <%}else{for(int l=0;l<buylist.size();l++){String name=buylist.get(l);float price=(float)pbuylist.get(l);int num=(int)nbuylist.get(l);float money=((int)((price*num+0.05f)*10))/10f;total+=money;%><tr align="center" height="50"><td><%=name %></td><td><%=price %></td><td><%=num %></td><td><%=money %></td><td><a href="index.jsp?id=<%=((l+1)*10 )%>">移除</a></td></tr><% }}%><tr height="50" align="center"><td colspan="5">应付金额:<%=total %></td></tr><tr height="50" align="center"><td colspan="3"><a href="index.jsp?id=888888">清空购物车</a></td></tr></table>截图5-3实现一个简单的登录程序。