您的位置:首页 > 编程语言 > Java开发

教案:开发基于JSPServletJavaBean的网上交易系统-第2章 Servlet基础

2008-05-04 14:34 645 查看
由于种种原因,部分内容被隐藏,请大家原谅。

如果有什么问题,可以与我联系,我会尽快解答。

如果你觉得这篇文章对你有用,请回贴,谢谢。

授课教师:牟勇
课时:100分钟

l 本章技能目标
n理解Servlet的生命周期
n会使用Servlet处理Get,Post请求
n会使用Servlet处理页面转向
n会配置web.xml文件
l 本章重点
nServet处理GET,POST请求
nServlet在web.xml文件中的配置
l 本章难点
nServlet处理页面的转向
nServlet的生命周期
l 本章工作任务
n使用Servlet实现E-Book电子书店用户验证
u 如果用户名或密码错误,则给出提示
u 如果输入数据正确,则显示登录成功
l 整章授课思路
n本章依次课讲解五个问题:Servlet定义,Servlet的创建,Servlet生命周期,Servlet部署和转向控制。
nServlet的定义:使用JSP技术编写动态网页,提出在JSP技术出现之前如何实现动态网页的编写?从而引入Servlet,并说明Servlet是一个运行的服务器端的Java程序。强调Servlet的作用是处理客户端请求并作出响应。
nServlet的创建:首先创建一个前台页面HTML文件或者JSP文件,并把FORM表单的action属性指向一个Servlet,然后创建该Servlet,用以接收前台页面传入的请求值,并介绍Servlet的方法:doGet(),doPost()。
nServlet生命周期:说明Servlet的实例化-初始化-服务-销毁的过程。
nServlet部署:Servlet与JSP一样,都需要部署到容器(在本书中指tomcat)上才能运行。这就要遵循容器的特定的规定:web.xml文件的配置要求。说明各种元素的配置和作用。
n转向控制:主要讲解重定向以及转发的方式和它们的区别,重定向丢失数据,而转发不丢失,是服务器端行为。
回顾: [5分钟]
Get请求和Post请求有什么差异?
JavaEE的体系结构分几层?
如何理解HTTP协议?
预习检查: [5分钟]
Servlet与JSP之间的关系?
页面跳转有哪几种方式?
如何理解Servlet的生命周期?
课程知识点讲解:
Servlet的定义:[15分钟]
为什么要需要Servlet
提问:在JSP技术出现之前如何编写服务器动态网页?
答案:使用Servlet。
什么是Servlet
定义:Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求并做出响应的程序
初识Servlet

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println(" <head><title>Servlet</title></head>");
out.println(" <body>");
out.println("你好,欢迎来到Servlet世界");
out.println(" </body>");
out.println("</html>");
out.close();
}
}

教员重点说明写一个servlet需要导入的包,继承的类,以及doGet方法的一般写法思路。
Servlet与JSP之间的关系
JSP转译后的.java文件与Servlet的处理方式一样
Servlet是JSP技术的基础
Servlet的创建[15分钟]
前台页面的创建:
v FORM表单的编写

后台Servlet的创建:
v 使用Eclipse的Servlet向导创建Servlet代码模板
v 根据表单提交方法,确定接收方法
v 接收请求数据、处理数据、返回响应页面
教员演示在Eclipse中创建Servlet的步骤
Servlet编程模式
处理get和post请求(强调doGet()和doPost()方法)

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
//doGet方法体内容
}
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
//doPost方法体内容
}
}

如何接收请求参数(强调getParameter方法)

String userName = request.getParameter("userName");
String userPass = request.getParameter("userPass");


根据结果,转向其他页面或资源(强调response.sendRedirect()方法)

if (userName == "accp" && userPass == "123")
response.sendRedirect("success.jsp");
else
response.sendRedirect("failure.jsp");

教员应详细说明上述代码
Servlet的生命周期[15分钟]
通过上图说明一次请求响应过程中,Servlet如何诞生的。
教员应按顺序详细说明Servlet生命周期,以及生命周期过程中,Servlet将被调用的方法。注意强调以下三点:
v Servlet各方法的调用均由容器调用,我们写Servlet的程序员并不负责Servlet方法的调用,所以在写一个Servlet时,我们只需要考虑Servlet“要做什么”,而不需要去考虑“何时做”。
v 当客户提交请求到容器时,容器将先调用了service方法,而service方法再根据客户端请求调用相应的doGet方法或doPost方法,所以,一般情况下,不要重写service方法。
v Servlet的init()方法在一次生命周期中只会被调用一次,而service方法会被多次调用。
生命周期相关方法

public class HelloServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("初始化时第一次调用!");
}
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.println("<HTML>");
out.println(" <HEAD><TITLE>HelloServlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("你好!ACCP "+new Date());
out.println(" </BODY></HTML>");
}
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
doGet(request,response);
}
public void destroy() {System.out.println(“释放资源!"); }
}


教员重点说明各方法的用处即可。
程序演示:
演示示例3:HelloServlet,重点说明Servlet的整个生命周期
现场编程:
请使用Servlet编写在页面显示“你好, ACCP!”的程序代码
教员可以请一到二位学员来完成编程。
常见错误:
如果程序运行结果如下:
原因:中文乱码
解决方案:根据具体情况,选择以下的三种方案之一进行乱码转换
方案一:使用response.setContentType(“text/html;charset=GBK”)

public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");//设定中文
PrintWriter out = response.getWriter(); //使用输出流,输出信息
}
}

方案二:使用request.setCharacterEncoding()

public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
request.setCharacterEncoding(“GBK”);
response.setContentType("text/html;charset=GBK");//设定中文
PrintWriter out = response.getWriter(); //使用输出流,输出信息
}
}

方案三:使用new String(),重构字符串编码

public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
request.setCharacterEncoding(“GBK”);
response.setContentType("text/html;charset=GBK");//设定中文
String name=new String(request.getParameter(“name”).getByte(“ISO-8859-1”));
PrintWriter out = response.getWriter(); //使用输出流,输出信息
}
}

Servlet部署[25分钟]
文件结构:
v Web应用下必须存在WEB-INF文件夹,里面必须有一个web.xml文件,它是一个配置文件,描述所有关于Web应用的信息都存放在这个文件中。
v 第三方的jar文件存放在lib下面。
v Servlet,JavaBean等的class文件存放在classes下面
web.xml文件中配置Servlet

<web-app>
<servlet>
<servlet-name> HelloServlet </servlet-name>
<servlet-class> y2javaee.sg.ch02.HelloServlet </servlet-class>
</servlet>

<servlet-mapping>
<servlet-name> HelloServlet </servlet-name>
<url-pattern> /HelloServlet </url-pattern>
</servlet-mapping>
</web-app>

如何访问Servlet
教员应详细介绍servlet的配置文件web.xml里两个标记的意义。
常见错误
web.xml文件常见错误
servlet-mapping中的name与servlet-name中的name不一致
添加多个mapping映射
转向控制[10分钟]
数据的传递方式
从页面到Servlet
request.getParameter(“param”);
从Servlet到Servlet或JSP页面
RequestDispatcher对象的forward()方法
JSP的forward动作实质是RequestDispatcher技术

String pass = request.getParameter("password");
String user = request.getParameter("loginName");

if (user.equals("accp") && pass.equals("accp")) { request.setAttribute("loginname", user);
RequestDispatcher dispatcher =
request.getRequestDispatcher("/ch02/ok.jsp");
dispatcher.forward(request, response);
}
else { response.sendRedirect("/ch02/register.jsp"); }

本章总结 [10分钟]
如何理解Servlet程序?Servlet的作用是什么?
request、response对象有哪些常用方法?
实现页面跳转有几种方式?它们之间有哪些区别?
如何理解Servlet的生命周期?
web.xml文件在Web项目中的作用是什么?
考核点
servlet的生命周期
如何获得JSP页面的请求参数
跳转页面的两种方式
扩展部分:
暂无
学员问题汇总:
暂无
作业:
习题1:48页至49页选择题
习题2:49页第1,2,3,4题
习题3:预习第三章,试做课后的选择题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐