基本功训练Servlet技术.docx

上传人:b****7 文档编号:26673640 上传时间:2023-06-21 格式:DOCX 页数:19 大小:393.43KB
下载 相关 举报
基本功训练Servlet技术.docx_第1页
第1页 / 共19页
基本功训练Servlet技术.docx_第2页
第2页 / 共19页
基本功训练Servlet技术.docx_第3页
第3页 / 共19页
基本功训练Servlet技术.docx_第4页
第4页 / 共19页
基本功训练Servlet技术.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基本功训练Servlet技术.docx

《基本功训练Servlet技术.docx》由会员分享,可在线阅读,更多相关《基本功训练Servlet技术.docx(19页珍藏版)》请在冰豆网上搜索。

基本功训练Servlet技术.docx

基本功训练Servlet技术

同学们,这些小例题虽然很简单,但是可以锻炼一下大家对于本节课相关小模块的思维能力。

这都是按照我自己的习惯手打出来的,很多都是我自己风格的代码直接复制过来的,可能很多同学看着会不习惯。

希望大家好好看看,不要求你一个字一个字去读,只要你能理解每道题目中含有什么信息,以后遇到了这样一个情境能会去运用就行。

其中,红色的标出的部分一般是这个小模块是干嘛的,类似于题目要求,意思就是当你看到以后,能有个条件反射应该怎么实现。

黑色加粗是需要了解的概念,黄色部分是拓展,表格里面的是源代码,你们并不需要刻意去跟我写得一样,只要这些功能你们能自己实现就行了。

千万不要把程序写死了哈,最后希望我跟同学们一起学习,共同进步。

既然选择了远方,就注定风雨兼程。

――――――― 写在前面

 

基本功训练一:

在Servlet中实现请求转发

在实际的网站开发中,请求转发是最常见的,在Servlet中实现页面转发,使用的是RequestDispatcher对象的forward()方法。

可以在Servlet中通过forward()方法将当前的请求转发到其他web组件(Servlet、JSP、HTML)。

下面的例子关键点是如何在Servlet中控制请求转发,在文本框中输入用户名和密码,单击“登录按钮,如果用户名和密码输入正确则页面转发到成功页,否则页面将跳转到失败页。

运行结果如下图所示:

图1-1 登陆页面

图1-2成功页

图1-3失败页

关键代码:

1)index.jsp

用户名:

密码:

2)ForwardServlet关键代码:

publicclassForwardServletextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");//设置请求的字符编码格式

Stringname=request.getParameter("name");//获得请求表单中的用户名

Stringpwd=request.getParameter("pwd");//获得请求表单的密码

if((name!

=null&&!

name.equals(""))&&(pwd!

=null&&!

pwd.equals(""))){

if(name.equals("zhaoyanliang")&&pwd.equals("123")){

request.getRequestDispatcher("success.jsp").forward(request,

response);//使用RequestDispatcher对象将页面请求转发到success.jsp页

}else{

request.getRequestDispatcher("error.jsp").forward(request,

response);

}

}else{

}

}

}

3)web.xml关键代码:

ForwardServlet

cn.itcast.servlet.ForwardServlet

ForwardServlet

/forward

【思维扩展】当在Servlet中验证用户名和密码失败时,将页面跳转到index.jsp首页面。

也可以在错误页中定义一个变量,根据变量值的不同来判定显示结果。

基本功训练二:

在Servlet中处理表单提交的数据

JavaWeb的核心组件Servlet的主要功能就是处理客户端的表单请求数据,然后再Servlet中首先对这些数据进行验证,然后可能会封装到JavaBean,接下来调用数据库的业务逻辑方法将数据保存或者进行其他操作,最后Servlet控制将响应结果返回到客户端。

运行程序,结果如图所示,输入用户注册信息提交后,在Servlet中将获取这些表单请求信息,然后通过forward()方法将这些请求信息转发,最后在转发页中显示出这些信息。

图2-1获取用户信息界面

图2-2在Servlet中获取表单提交的数据

关键代码:

1)index.jsp表单关键代码:

用户名:

密码:

性别:

年龄:

Email:

2)LoginServlet关键代码:

publicclassLoginServletextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("GBK");//设置请求的字符编码格式

Stringname=request.getParameter("name");//获得用户名

Stringpwd=request.getParameter("pwd");//获得密码

Stringsex=request.getParameter("sex");//获得性别

Stringage=request.getParameter("age");//获得年龄

Stringemail=request.getParameter("email");//获得Email

request.getRequestDispatcher("logininfo.jsp").forward(request,response);

}

}

3)logininfo.jsp

用户名:

<%=request.getParameter("name")%>

密码:

<%=request.getParameter("pwd")%>

性别:

<%=request.getParameter("sex")%>

年龄:

<%=request.getParameter("age")%>

Email:

<%=request.getParameter("email")%>

【注意】本实例知识为了说明如果在Servlet中处理表单提交的数据,并没有实现数据的保存或更新操作。

而实际上在Servlet中处理完表单数据后,通常会根据表单数据更新数据库,最后再由Servlet进行控制转发操作。

【思维扩展】在以上程序实现的基础上,在Servlet中获取表单数据后,将数据保存在数据库中。

基本功训练三:

在servlet中实现页面重定向

下面的例子将演示如何在Servlet中实现页面重定向。

实现页面重定向主要应用在HttpServletResponse对象的sendRedirect()方法,该方法与页面转发的forward()方法有本质的区别。

使用forward()方法时,会将当前正在处理的请求转发到其他Web组件(Servlet、JSP、HTML),如将请求转发到index.jsp页,在index.jsp页中可以通过request内置对象来获得此请求。

而sendredirect()方法不会转发请求,知识简单地页面跳转。

运行程序,结果如下图显示,当用户输入的用户名或密码输入错误时,提交表单后在Servlet中会进行判断,然后将页面重定向到错误页。

图3-1在Servlet中实现页面重定向

图3-1用重定向实现跳转到错误页面

关键代码:

1)index.jsp

用户名:

密码:

2)RedirectServlet关键代码:

publicclassRedirectServletextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");//设置请求数据的字符编码格式

Stringname=request.getParameter("name");//获得请求表单中的用户名

Stringpwd=request.getParameter("pwd");//获得请求表单中的密码

if((name!

=null&&!

name.equals(""))&&(pwd!

=null&&!

pwd.equals(""))){

if(name.equals("mr")&&pwd.equals("123")){

//使用SendRedirect()方法将页面重定向到success.jsp

response.sendRedirect("success.jsp");

}else{

//使用SendRedirect()方法将页面重定向到error.jsp

response.sendRedirect("error.jsp");

}

}

}

}

【思维扩展】在以上程序的基础上,实现在Servlet中如果验证成功,将用户名保存在session中,然后将页面重定向到success.jsp页,并在该页中显示出登录的用户名。

基本功训练四:

动态生成HTML文档

在实际开发过程中,有时需要直接在Servlet中将数据的处理结果直接反馈给客户端浏览器,这就需要通过Servlet来生成HTML内容。

下面的例子将涉及到如何在Servlet类中动态生成一个HMTL页面,运行结果如下图所示:

图4-1使用Servlet动态生成的HTML页的内容

查看其源文件

关键代码:

publicclassServletHTMLextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

//设置响应的字符集格式为UTF-8

response.setCharacterEncoding("UTF-8");

//设置响应正文的MIME类型

response.setContentType("text/html");

//返回一个PrintWriter对象,Servlet使用它来输出字符串形式的正文数据

PrintWriterout=response.getWriter();

//以下为输出的HTML正文数据

out.println("

DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");

out.println("");

out.println("动态生成HTML文档");

out.println("");

out.println("");

out.println("");

out.println("");

out.println("动态生成HTMl文档");

out.println("表格");

out.println("");

out.println("");

out.println("");

out.flush();

out.close();

}

}

这样,关于web.xml大家应该都会配了,也不用我多说了。

【思维扩展】在Servlet中动态生成HTML文档,并应用Javascript的alert()方法弹出一个提示框。

【注意】Javascript的弹出提示框代码要求在Servlet中生成。

基本功训练五:

在Servlet中向客户端写Cookie信息

以下的例题将涉及到如何向客户端写Cookie信息,运行结果如下图所示。

输入用户名和密码提交到Servlet中,在Servlet中将用户名添加到Cookie对象中,然后关闭浏览器,在重新访问用户登录页时,用户名的文本框中会显示上一次输入的用户名信息。

本程序的实现主要是应用ServletAPI中提供的Cookie类。

用户把表单信息提交给Servlet后,在Servlet中获取用户请求的信息并添加到Cookie对象中,再通过HttpServletResponse对象把Cookie信息返给客户端,然后在JSP页面中通过request内置对象来获取客户端的Cookie信息。

在JSP中使用request对象获取的是一个Cookie对象的数组,需要在循环体中遍历所有的Cookie对象,并通过Cookie对象的getName()方法查找所有Cookie对象的名称,然后根据找到的Cookie名称获得Cookie对象中的值。

Cookie类中包含的主要方法及说明如下图表示:

方 法

说 明

GetComment()/setComment(Stringpurpose)

获取/设置Cookie的注释

getDomain()/setDomain(Stringparrern)

获取/设置Cookie的适用域。

一般Cookie只返回给与发送它的服务器名字完全相同的服务器

getMaxAge()/setMaxAge(intexpiry)

获取/设置Cookie过期之前的时间。

以秒为单位。

如果不设置该值,则Cookie只在当前会话内有效,即在用户关闭浏览器之前有效。

getName()/setName(Stringname)

获取/设置Cookie的名字

getValue()/setValue(StringnewValue)

获取/设置Cookie的值

getPath()/setPath(Stringuri)

获取/设置Cookie适用的路径。

如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下的所有页面

getVersion()/setVersion(intv)

获取/设置Cookie所遵从的协议版本,默认版本为0

表一 Cookie类的主要方法及说明仅供参考

实现过程如下:

1)index.jsp

用户名:

密码:

2)CookieServlet

publicclassCookieServletextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");

Stringname=request.getParameter("name");//获取用户名

//创建一个Cookie对象,并将用户名保存到Cookie对象中

CookienameCookie=newCookie("userName",name);

//设置Cookie过期之前的时间,单位为秒

nameCookie.setMaxAge(60);

//通过response的addCookie()方法将此Cookie对象保存到客户端浏览器的Cookie中

response.addCookie(nameCookie);

request.getRequestDispatcher("success.jsp").forward(request,response);

}

}

3)在index.jsp中读取所有客户端的Cookie,通过循环Cookie数组找到保存用户名的Cookie,关键代码:

<%

StringuserName=null;//用于保存从cookie中读取出的用户名

CookiecookieArr[]=request.getCookies();//获取客户端的所有Cookie

if(cookieArr!

=null&&cookieArr.length>0){

for(Cookiec:

cookieArr){

if(c.getName().equals("userName")){//如果Cookie中有一个名为

userName的Cookie

userName=c.getValue();//获得此cookie的值

}

}

}

%>

4)将获取到的用户名Cookie的值赋值给用户名文本框。

关键代码:

=null){out.print(userName);}%>"/>

【注意】 以上程序存在一个Bug,当输入中文提交时程序会发生异常,请同学们自行解决。

【提示】在创建Cookie对象时,由于不可以直接将中文字符作为Cookie的值,因此在将中文字符保存到Cookie对象之前,应该使用.URLEncoder类的encode()方

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1