《Web软件专业技术》课程实验二Word格式.docx
《《Web软件专业技术》课程实验二Word格式.docx》由会员分享,可在线阅读,更多相关《《Web软件专业技术》课程实验二Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
throwsServletException,IOException{
StringuserName=request.getParameter("
userName"
);
PrintWriterpw=response.getWriter();
pw.println("
<
html>
"
head>
/head>
body>
h3>
Hello,"
+userName+"
/h3>
/body>
/html>
}
【步骤2】使用下面的URL访问之。
:
8080/helloapp/hellouser?
userName=John
将userName的值改为你自己的名字,看输出结果。
若不给出查询字符串,结果如何?
参数值使用汉字如何?
(二)通过表单传递请求参数,使用HttpServletRequest对象获得请求参数
【步骤1】首先编写一个input.html文件,存放在helloapp目录中。
该页面在屏幕上显示一个表单,其中包括姓名和年龄域,点击“确定”按钮后,将表单参数传递给ParamServlet并显示出来。
input.html代码如下:
title>
参数传递<
/title>
metahttp-equiv="
Content-Type"
content="
text/html;
charset=gb2312"
>
center>
<
从表单向Servlet传递参数<
formmethod="
GET"
action="
paramtest"
>
姓名:
inputtype="
text"
name="
name"
br>
年龄:
age"
submit"
value="
确定"
reset"
重置"
/form>
【步骤2】编写ParamServlet.java,其代码如下:
importjava.util.*;
publicclassParamServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setCharacterEncoding("
gb2312"
response.setContentType("
Stringname=request.getParameter("
name=newString(name.getBytes("
iso8859-1"
),"
Stringage=request.getParameter("
age=newString(age.getBytes("
PrintWriterpw=response.getWriter();
pw.println("
姓名:
+name+"
p>
年龄:
+age+"
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
doGet(request,response);
【步骤3】测试参数传递。
在浏览器的地址栏中输入:
helloapp/input.html。
输入数据,点击“确定”按钮,体会表单参数的传递。
问题1:
如何通过超链接的锚标签(<
ahref>
)传递请求参数?
(三)编写一个程序实现文件上传功能。
假设学生上传作业,需要执行学号和上传的文件。
as11.java:
importjavax.servlet.annotation.*;
@WebServlet(name="
as11"
urlPatterns={"
/"
})
@MultipartConfig(location="
D:
\\"
)
publicclassas11extendsHttpServlet{
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
//返回Web应用程序文档根目录
Stringpath=this.getServletContext().getRealPath("
Stringmnumber=request.getParameter("
mnumber"
Partp=request.getPart("
Stringmessage="
;
if(p.getSize()>
1024*1024){//上传的文件不能超过1MB大小
p.delete();
message="
文件太大,不能上传!
}else{
path=path+"
\\member\\"
+mnumber;
Filef=new);
if(!
f.exists()){//若目录不存在,则创建目录
f.mkdirs();
Stringh=p.getHeader("
content-disposition"
//得到文件名
Stringfname=h.substring(h.lastIndexOf("
)+1,h.length()-1);
p.write(path+"
+fname);
文件上传成功!
request.setAttribute("
message"
message);
RequestDispatcherrd=request.getRequestDispatcher("
rd.forward(request,response);
%@pagecontentType="
charset=UTF-8"
pageEncoding="
UTF-8"
%>
上传文件<
${message}<
formaction="
enctype="
multipart/form-data"
method="
post"
table>
tr>
tdcolspan="
2"
align="
center"
文件上传<
/td>
/tr>
td>
会员号:
size="
30"
/>
文件名:
file"
tdalign="
right"
提交"
left"
/>
/table>
xml文件部分代码:
(四)简单的综合应用<
?
xmlversion="
1.0"
encoding="
web-appxmlns:
xsi="
xmlns="
xsi:
schemaLocation="
"
id="
WebApp_ID"
version="
2.5"
display-name>
ss<
/display-name>
welcome->
welcome-<
/welcome-file>
/welcome->
servlet>
description>
/description>
FirstServlet<
servlet-name>
/servlet-name>
servlet-class>
com.demo.FirstServlet<
/servlet-class>
/servlet>
servlet-mapping>
url-pattern>
/FirstServlet<
/url-pattern>
/servlet-mapping>
SecondServlet<
com.demo.SecondServlet<
/SecondServlet<
/web-app>
【步骤1】创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。
【步骤2】定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private的成员变量,定义访问和修改sno和name的方法。
【步骤3】编写名为FirstServlet的Servlet,要求当用户在input.html中输入信息后点击“提交”按钮,请求FirstServlet对其处理。
在FirstServlet中使用表单传递的参数(学号和姓名)创建一个Student对象并将其作为属性存储在请求对象中,然后获得通过请求对象的getRequestDispatcher()方法获得RequestDispatcher()对象,将请求转发到SecondServlet。
【步骤4】在SecondServlet中取出请求对象上存储的Student对象,并显示输出该学生的学号和姓名。
在SecondServlet的输出中应该包含一个超链接,点击该连接可以返回input.html页面。
图2.1input.html页面显示结果图2.2SecondServlet显示结果
Input.html:
!
DOCTYPEhtml>
LoginPage<
FirstServlet"
tablewidth="
298"
border="
0"
cellpading="
cellspacing="
1"
<
学号:
snumber"
15"
sname"
登录"
&
nbsp;
取消"
Student.java:
packagecom.demo;
publicclassStudent{
privateStringsno;
privateStringname;
publicStudent(Stringsno,Stringname){
super();
this.sno=sno;
this.name=name;
publicStudent(){
publicStringgetSno(){
returnsno;
publicvoidsetSno(Stringsno){
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
FirstServlet.java:
importjavax.servlet.annotation.WebServlet;
importcom.demo.Student;
urlPatterns="
/first"
)
publicclassFirstServletextendsHttpServlet{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
ServletContextcontext;
publicvoidinit(){
context=getServletContext();
publicvoiddoPost(HttpServletRequestrequest,
request.setCharacterEncoding("
Stringsnumber=request.getParameter("
Stringsname=request.getParameter("
Studentstud=newStudent(snumber,sname);
request.setAttribute("
stud"
stud);
RequestDispatcherview=
request.getRequestDispatcher("
/SecondServlet"
view.forward(request,response);
SecondServlet.java:
publicclassSecondServletextendsHttpServlet{
Studentstud=(Student)request.getAttribute("
PrintWriterout=response.getWriter();
out.println("
+stud.getSno()+"
+stud.getName()+"
ahref=\"
/ss/input.html\"
返回输入页面<
/a>
/center>
Web.xml:
四.实验体会(包括收获、心得体会、存在的问题及解决问题的方法、建议等)