关于获取请求参数并处理显示的总结

最近有个作业

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 />
请输入平时成绩:&nbsp;&nbsp;&nbsp;<input type="text" name="c1" value="88" /><br />
请输入作业1-5成绩:<input type="text" name="c2" value="99" /><br />
请输入机考成绩:&nbsp;&nbsp;&nbsp;<input type="text" name="c3" value="77"/><br />
请出入quiz成绩:&nbsp;&nbsp;&nbsp;<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%>&nbsp;参加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" />&nbsp;参加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 />
请输入平时成绩:&nbsp;&nbsp;&nbsp;<input type="text" name="c1" value="88" /><br />
请输入作业1-5成绩:<input type="text" name="c2" value="99" /><br />
请输入机考成绩:&nbsp;&nbsp;&nbsp;<input type="text" name="c3" value="77"/><br />
请出入quiz成绩:&nbsp;&nbsp;&nbsp;<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就不多写了,想这样写的可以好好参照上面的使用方法即可

 

 

 

posted @ 2014-01-04 10:38  爱的叹息  阅读(524)  评论(0编辑  收藏  举报