《web软件技术》课程实验二 )
- 格式:doc
- 大小:168.00 KB
- 文档页数:12
《Web软件技术》课程
实验报告
华东理工大学信息学院计算机系
2017年03月03日题目 HTTP请求对及数据处理
专业 信息工程
班级 信工143
学号 10141463
姓名 王钊健
指导教师签名 范贵生
实验二 HTTP请求对及数据处理
姓名 王钊健 学号 10141463 专业班级 信工143 成绩_________
实验日期 2017/3/2 实验地点 信息大楼 215 指导教师(签名)
一.实验目的
1. 掌握如何获得请求参数;
2. 掌握如何检索请求头;
3. 了解如何通过请求对象获得客户信息;
4. 重点掌握使用请求对象存储数据和请求转发。
二.实验工具与设备
三.实验内容
(一)通过查询串传递请求参数,并在Servlet中检索请求参数
【步骤1】编写下面的Servlet。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloUserServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException{
String userName = request.getParameter("userName");
PrintWriter pw = response.getWriter();
pw.println("");
pw.println("
");pw.println("");
pw.println("
");pw.println("
pw.println("");
pw.println("");
}
}
【步骤2】使用下面的URL访问之。
http://localhost:8080/helloapp/hellouser?userName=John
将userName的值改为你自己的名字,看输出结果。若不给出查询字符串,结果如何?参数值使用汉字如何?
(二)通过表单传递请求参数,使用HttpServletRequest对象获得请求参数
【步骤1】首先编写一个input.html文件,存放在helloapp目录中。该页面在屏幕上显示一个表单,其中包括姓名和年龄域,点击“确定”按钮后,将表单参数传递给ParamServlet并显示出来。
input.html代码如下:
【步骤2】编写ParamServlet.java,其代码如下:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ParamServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
response.setCharacterEncoding("gb2312");
response.setContentType("text/html;charset=gb2312");
String name = request.getParameter("name");
name = new String(name.getBytes("iso8859-1"),"gb2312");
String age = request.getParameter("age");
age = new String(age.getBytes("iso8859-1"),"gb2312");
PrintWriter pw = response.getWriter();
pw.println("");
pw.println("
");pw.println("");
pw.println("
");pw.println("
");
pw.println("
");
pw.println("");
pw.println("");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
doGet(request, response);
}
}
【步骤3】测试参数传递。在浏览器的地址栏中输入:http://localhost:8080/helloapp/input.html。输入数据,点击“确定”按钮,体会表单参数的传递。
问题1:如何通过超链接的锚标签()传递请求参数?
(三)编写一个程序实现文件上传功能。假设学生上传作业,需要执行学号和上传的文件。
as11.java:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name="as11",urlPatterns={"/fileUpload.do"})
@MultipartConfig(location="D:\\",fileSizeThreshold=1024)
public class as11 extends HttpServlet{
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
// 返回Web应用程序文档根目录
String path = this.getServletContext().getRealPath("/");
String mnumber = request.getParameter("mnumber");
Part p = request.getPart("fileName");
String message="";
if(p.getSize() >1024*1024){ // 上传的文件不能超过1MB大小
p.delete();
message = "文件太大,不能上传!";
}else{
path = path + "\\member\\" +mnumber;
File f = new File(path);
if( !f.exists()){ // 若目录不存在,则创建目录
f.mkdirs();
}
String h = p.getHeader("content-disposition");
// 得到文件名
String fname = h.substring(stIndexOf("\\")+1, h.length()-1);
p.write(path + "\\"+ fname);
message = "文件上传成功!";
}
request.setAttribute("message", message);
RequestDispatcher rd = request.getRequestDispatcher("/fileUpload.jsp");
rd.forward(request, response);
}
}
fileUpload.jsp:
<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
${message}
xml文件部分代码: