最近有个作业
JavaEE上机考试题目
根据学号选择题目:
单数学号完成A题,双数学号完成B题。
提交页面截屏、源代码(html/jsp/java/xml),制作Word文档,文件名:学号姓名题号.doc, 放于C:\test下。
完成后离开考场,考试期间不可互相交流。
题目A:
制作:
A、设计登陆页面login.html,页面可以参看图1所示。
B、编写TestBean.java获取用户提交信息,按照图3提示计算总评成绩。
C、编写default.jsp,实现成绩输出页面,页面可以参看图3所示。
D、请注意代码的书写规范,实体的命名规范。
E、页面效果不要求完全一致,可自行美化。
编写login.html和default.jsp和 TestBean.java,实现功能如下:
图1
图2
图3
制作:
A、设计登陆页面login.html,页面可以参看图1所示。
B、编写TestBean.java获取用户提交信息,按照图3提示计算总评成绩。
C、编写default.jsp,实现成绩输出页面,页面可以参看图3所示。
D、请注意代码的书写规范,实体的命名规范。
E、页面效果不要求完全一致,可自行美化。
题目B:编写login.jsp和LoginServlet(可使用JavaBeans,也可不用JavaBeans),实现功能如下图:
图4
图5
制作:
A、设计登陆页面login.jsp,页面可以参看图4所示。
B、编写LoginServlet.java获取用户提交信息,按照图5提示比例计算总评成绩。
C、编写web.xml,部署servlet,由该servlet直接响应login.jsp提交请求。
D、在Servlet编码时如遇到汉字乱码问题,你可以选择:❶解决这个问题,方案有很多(如需编码转换工具可在网络课堂下载);❷选择使用英文提示,绕过这个问题。不过,用户输入的汉字需要正确显示。
E、请注意代码的书写规范,命名规范。
F、页面效果不要求完全一致,可自行美化。
,有点想法,现在说说来
首先,抛开他所说的要求,仅仅从实现功能上来说,有三个方法
第一,纯页面接受请求显示数据
login.jsp页面代码
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head> <title>test</title> </head><body>
<b>欢迎参加JavaEE上机考试</b> <form action="loginServlet.jsp" method="post"> <center> <b>请输入姓名:<input type="text" name="name" /></b> </center><br /> 请输入平时成绩: <input type="text" name="c1" value="88" /><br /> 请输入作业1-5成绩:<input type="text" name="c2" value="99" /><br /> 请输入机考成绩: <input type="text" name="c3" value="77"/><br /> 请出入quiz成绩: <input type="text" name="c4" value="66" /><br /> <center> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </center> </form> </body></html>loginServlet.jsp代码:
<%@ page contentType="text/html;charset=gb2312"%>
<html> <head> <title>test</title> </head><body>
<% request.setCharacterEncoding("gb2312"); String name = request.getParameter("name"); float c1 = Float.parseFloat(request.getParameter("c1")); float c2 = Float.parseFloat(request.getParameter("c2")); float c3 = Float.parseFloat(request.getParameter("c3")); float c4 = Float.parseFloat(request.getParameter("c4")); double avg = c1*0.1+c2*0.6+c3*0.2+c4*0.1; %> <b>欢迎<%=name%> 参加JavaEE上机考试<br /></b> <center>JavaEE成绩清单</center><br /> 平时成绩(10%)<%=c1%><br /> 作业1-5(60%)<%=c2%><br /> 机考成绩(20%)<%=c3%><br /> quiz成绩(10%)<%=c4%><br /> (注:输入百分制的成绩,按以上比例计算总评成绩)<br /> 总评成绩:<%=avg%> </body></html>第二,使用javabean来接受处理,在loginServlet.jsp中用javabean显示数据处理结果
Student.java代码
package zp.com;
public class Student{ public String name;//学生姓名 public float c1; //学生的平时成绩 public float c2; //学生的作业1-5成绩 public float c3; //学生的机考成绩 public float c4; //学生的quiz小测验成绩 public float avg; //学生总评成绩 //学生姓名的设置和获取 public void setName(String name){ this.name = name; } public String getName(){ return this.name; } //学生的平时成绩的设置和获取 public void setC1(float c1){ this.c1 = c1; } public float getC1(){ return this.c1; } //学生的作业1-5成绩设置和获取 public void setC2(float c2){ this.c2 = c2; } public float getC2(){ return this.c2; } //学生的机考成绩的设置和获取 public void setC3(float c3){ this.c3 = c3; } public float getC3(){ return this.c3; } //学生的quiz小测验成绩的设置和获取 public void setC4(float c4){ this.c4 = c4; } public float getC4(){ return this.c4; } public void setAvg(float avg){ this.avg = avg; } public float getAvg(){ return (float)(c1*0.1+ c2*0.6 +c3*0.2 + c4*0.1); }}login.jsp代码和第一个方法一样:这里就不多写了
loginServlet.jsp代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:useBean id="student" class="zp.com.Student" scope="page" />
<html>
<head> <title>test</title> </head><body>
<jsp:setProperty name="student" property="name" param="name" /> <jsp:setProperty name="student" property="c1" param="c1" /> <jsp:setProperty name="student" property="c2" param="c2" /> <jsp:setProperty name="student" property="c3" param="c3" /> <jsp:setProperty name="student" property="c4" param="c4" /> <b>欢迎<jsp:getProperty name="student" property="name" /> 参加JavaEE上机考试<br /></b> <center>JavaEE成绩清单</center><br /> 平时成绩(10%):<jsp:getProperty name="student" property="c1" /><br />//这里的四个成绩也都可以调用student内的get方法获得 作业1-5(60%):<jsp:getProperty name="student" property="c2" /><br /> 机考成绩(20%):<jsp:getProperty name="student" property="c3" /><br /> quiz成绩(10%):<jsp:getProperty name="student" property="c4" /><br /> (注:输入百分制的成绩,按以上比例计算总评成绩)<br /> 总评成绩:<%=student.getAvg()%> </body></html>第三种方法是:用到Servlet来处理页面请求数据,并处理显示
login.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="zp.com.*"%>
<html>
<head> <title>test</title> </head>
<body>
<b>欢迎参加JavaEE上机考试</b> <form action="ls" method="post"> <center> <b>请输入姓名:<input type="text" name="name" value="test" /></b> </center><br /> 请输入平时成绩: <input type="text" name="c1" value="88" /><br /> 请输入作业1-5成绩:<input type="text" name="c2" value="99" /><br /> 请输入机考成绩: <input type="text" name="c3" value="77"/><br /> 请出入quiz成绩: <input type="text" name="c4" value="66" /><br /> <center> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </center> </form> </body></html>
LoginServlet.java
package zp.com;
//默认导入的包有java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*;
//import java.io.PrintWriter;//类
//import java.io.IOException;//异常类import java.io.*;//import javax.servlet.ServletException;//异常类import javax.servlet.*;//import javax.servlet.http.HttpServlet;//这是个类//import javax.servlet.http.HttpServletRequest;//接口//import javax.servlet.http.HttpServletResponse;//接口import javax.servlet.http.*;public class LoginServlet extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ doPost(request,response); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html;charset=gb2312"); PrintWriter out = response.getWriter(); StringBuffer buffer = new StringBuffer(); buffer.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0" + "Transitional//EN\">"); buffer.append("<html>"); buffer.append("<head><title>"); String title = "用户请求处理信息"; buffer.append(title); buffer.append("</title></head>"); buffer.append("<body>"); String name = request.getParameter("name"); float c1 = Float.parseFloat(request.getParameter("c1")); float c2 = Float.parseFloat(request.getParameter("c2")); float c3 = Float.parseFloat(request.getParameter("c3")); float c4 = Float.parseFloat(request.getParameter("c4")); double avg = c1*0.1+c2*0.6+c3*0.2+c4*0.1; buffer.append("<b>欢迎</b>" + name +"<b>参加JavaEE上机考试</b><br />"); buffer.append("<center><b>JavaEE成绩清单</b></center><br />"); buffer.append("平时成绩(10%) " + c1 +"<br />"); buffer.append("作业1-5(60%)" + c2 + "<br />"); buffer.append("机考成绩(20%)" + c3 + "<br />"); buffer.append("quiz成绩(10%)" + c4 + "<br />"); buffer.append("(注:输入的百分制的成绩,按以上比例计算总评成绩)<br />"); buffer.append("总评成绩 " + avg); buffer.append("</body>"); buffer.append("</html>"); out.println(buffer.toString()); }}
web.xml里的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <servlet-name>loginservlet</servlet-name> <servlet-class>zp.com.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginservlet</servlet-name> <url-pattern>/ls</url-pattern> </servlet-mapping></web-app>最后的一点个人看法
其实后来想想也可以在LoginServlet中通过调用Student.java类来实现数据的计算处理,即:在servlet中在调用javabean
这样一来其实就把LoginServlet.java仅仅看做是jsp的作用,似乎是披着羊皮的狼,呵呵,这个多少有点违背用servlet的初衷,所以后面的在servlet中用到javabean就不多写了,想这样写的可以好好参照上面的使用方法即可