JavaWeb ------第六章 Servlet技术

(1)在Web应用程序开发中,一般由JSP JavaBean技术和 Servlet技术的结合实现MVC开发模式。在MVC开发模式中将Web程序的组建分为3部分:视图、控制、业务,分别由JSP、Servlet、JavaBean实现。

(2)Servlet是用Java语言编写的服务器端程序,是由服务器调用和执行。Servlet技术可以处理客户端传来的HTTP请求,并返回一个响应。

(3)Servlet编程接口

@Servlet的框架是由javax.servlet(里面定义了所有的Servlet类都必须实现或拓展通用的类)和javax.servlet.http(采用HTTP协议通道的HttpServlet类)两个java包组成。

下面是Servlet的编程接口

功能 类和接口
Servlet实现 javax.servlet.Servlet, javax.servlet.SingleThreadModeljavax.servlet.GenericServlet, javax.servlwt.httpHttpServlet
Servlet配置 javax.servlet.ServletConfig
Servlet异常 javax.servletServletExceotion, javax.servletUnavailableException
请求和响应 javax.servletServletRequest, javax.servlet.ServletResponsejavax.servlet.ServletInputStream ,javax.servlet.ServletOutputStream
会话跟踪 javax.servlet.http.HttpSession, javax.servlet.http.HttpSessionBindingListeener
Servlet上下文 javax.servlet.ServletContext
Servlet协作 javax.servlet.RequestDispactcher
其他 javax.servlet.http.Cookie,javax.servlet.http.HttpUtils

(4)设计Servlet

@*#1有下列三种方法实现:

1.实现Servlet接口
创建Servlet类,必须直接或者间接实现javax.servlet.Servlet接口; 2.继承GenericServlet
GenericServlet是Servlet接口的直接实现类; 3.继承HttpServlet
HttpServlet类是javax.servlet.GenericServlet类的一个子类(都采用这种)

*#2.Servlet基本结构

Servlet程序的基本结构:
package....;
import.....;
piblic class Servlet 类名称 extends HttpServlet{
public void int(){}
public void doGet(HttpServletRequest request,HttpServletResponse response){}
public void doPost(HttpServletRequest request,HttpServletResponse response){}
public void service(HttpServletRequest request,HttpServletResponse response){}
public void destroy(){}
} 说明:
Servlet类需要继承类HttpServlet
Servlet的父类HttpServlet中包含以下几个重要方法,常根据需要重写他们
init():初始化方法,Servlet对象创建后,接着执行该方法,
doGet():当请求类型是“get”时,调用该方法。
doPost():当请求类型是“post”,调用该方法。
service():Servlet处理请求时自动执行service()方法,该方法根据请求的类型(get或post)调用doGet()或doPost()方法。
destroy():Servlet对象注销时自动执行。

*#3.Servlet的建立

建立Web工程找到WebRoot/WEB-INF目录下创建的web.xml。该文件配置了启动Web工程时需要服务器设置的一些初始信息。web.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<?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" 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">
<display-name>JavaTest</display-name>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>helloworld</servlet-name>
<servlet-class>servlets.helloworld</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>//这里配置的是Web工程默认的额主页名称:index.jsp
</welcome-file-list>
</web-app> 说明:对于webxml中配置的默认主页名称:index.jsp其作用是当客户端请求进入该项目工程时可以采用以下方式:http://地址:8080/工程名 注意记住映射地址在引用时使用该地址.

*#4.新建的Servlet的基本结构代码

package servlets;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class helloworld extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L;
/**
* Constructor of the object.
*/
public helloworld() {
super();
} /**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void init() throws ServletException {
// Put your code here
}
}

*#4.1自动修改的webxml,在其中添加了Servlet的配置信息,其内容如下:

<?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" 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">
<display-name>JavaTest</display-name>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>helloworld</servlet-name>
<servlet-class>servlets.helloworld</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

#5.编写Servlet代码---重写doGet()方法或doPost()方法

修改代码实际上是局势重写doGet()和doPost方法。这两个方法差异是在响应请求时,根据响应方法(get/post选择)所以重写其中一个另一个直接调用以实现的方法即可。

@
#6.修改配置文件

虽然自动配置了Servlwt,但仍可按需要修改(或自己建立)webxml。配置的内容包括:Servlet的访问问地址、加载的方式初始化参数其中必须配置的Servlet的访问地址。

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>servlets.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern> //访问地址:调用servlet时使用的路径匹配名。必须记清该名称,否则会找不到
<servlet-mapping>

*#7.部署并运行Servlet

部署到对应的文件路径下才可以运行,

启动tomcat服务器之后在浏览器地址栏输入:http://localhost:8080/javaText/HelloWorld

在浏览器中直接访问Servlet属于get方式,因此会执行doGet方法。

@**(5)Servlet常用对象及其方法

JSP有九个内置对象,其中7个内置对象都是由Servlet类或接口直接或间接创建的对象。

JSP内置对象 Servlet类或接口
out javax.servlet.http.HttpServletResponse 得到PrinterWriter类并创建Servlet的out对象
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession
application javax.servlet.ServletContext
config javax.servlet.ServletConfig
exception javax.servlet.ServletException
以下有几种常用方法:
request对象常用方法
1.javax.servlet.http.HttpServletRequest
void setCharacterEncoding():设置请求信息字符编码,常用与解决post方式下参数值汉字乱码问题
String getparameter(Strring paraName):获取单个参数值
String getParameterValues(String paraName):获取同名的参数的多个值
Object getAttribute(String attributeName):获取request范围内属性的值
void setAttribute(String attributeName,Object object):设置request范围内的属性的值
void removeAttribute(String attributeName):删除request范围内的属性
response对象常用方法:
2.javax.servlet.http.HttpServletRequest
PrinterWriter response.getWinter():获得out对象
void response.setContentType(String contentType):设置响应信息类型
void sengRedirect(String url):重定向

2017.11.2 JavaWeb----第六章 Servlet技术的更多相关文章

  1. 第六章P2P技术及应用

    第六章P2P技术及应用 P2P技术在我们日常生活中非常实用,例如我们常用的QQ.PPLive.BitTorrent就是基于P2P技术研发.下面将本章中的重点内容进行归纳. 文章中的Why表示产生的背景 ...

  2. Java Web程序设计笔记 • 【第5章 Servlet技术】

    全部章节   >>>> 本章目录 5.1 Servlet 技术介绍 5.1.1 为什么需要Servlet 5.1.1 Servlet 简介 5.1.2 Java Web 处理流 ...

  3. 2017.11.15 JavaWeb的学生体质管理系统

    (11)案例-----学生身体体质信息管理系统的开发 11.1 功能划分: 1.添加记录模块:完成向数据库添加新纪录 2.查询记录模块:完成将数据库的记录以网页的方式显示出来,一般采用有条件的查询 3 ...

  4. JavaWeb——第1章Web技术概述

    Web本意是蜘蛛网的意思,现常指Internet的Web技术.Web技术提供了方便的信息发布和交流方式,是一种典型的分布式应用结构,Web应用中的每一次信息交换都要涉及客户端和服务器. 一.Inter ...

  5. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  6. Java Web程序设计笔记 • 【第6章 Servlet技术进阶】

    全部章节   >>>> 本章目录 6.1 应用 Servlet API(一) 6.1.1 Servlet 类的层次结构 6.1.2 使用 Servlet API 的原则 6.1 ...

  7. 2017.11.12 web中JDBC 方式访问数据库的技术

    JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...

  8. 2017.2.28 activiti实战--第六章--任务表单(二)外置表单

    学习资料:<Activiti实战> 第六章 任务表单(二)外置表单 6.3 外置表单 考虑到动态表单的缺点(见上节),外置表单使用的更多. 外置表单的特点: 页面的原样显示 字段值的自动填 ...

  9. 2017.2.28 activiti实战--第六章--任务表单(一)动态表单

    学习资料:<Activiti实战> 第六章 任务表单(一)动态表单 内容概览:本章要完成一个OA(协同办公系统)的请假流程的设计,从实用的角度,讲解如何将activiti与业务紧密相连. ...

随机推荐

  1. my11_mysql事务隔离

    概述 ************************************************ Mysql有四个事务隔离级别,默认隔离级别为RR,开启一个事务可以使用 START TRANSA ...

  2. oracle db 产品路线图

    Release Schedule of Current Database Releases (文档 ID 742060.1)

  3. TCP/IP协议<二>

    一.TCP/IP的标准化 1.TCP/IP的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属 ...

  4. [转]jquery插件创建 jquery.fn.extend与jquery.extend

    本文转自:http://www.cnblogs.com/wyjgreat/archive/2011/07/19/2110754.html jQuery为开发插件提拱了两个方法,分别是: JavaScr ...

  5. Murano Weekly Meeting 2015.07.28

    Meeting time: 2015.July.28th 1:00~2:00 Chairperson: Kirill Zaitsev, core from Mirantis Meeting summa ...

  6. vue学习中遇到的onchange、push、splice、forEach方法使用

    最近在做vue的练习,发现有些js中的基础知识掌握的不牢,记录一下: 1.onchange事件:是在域的内容改变时发生,单选框与复选框改变后触发的事件. 2.push方法:向数组的末尾添加一个或多个元 ...

  7. 自定义input文件上传 file的提示文字及样式

    简单记录一下 效果图: 代码: <input class="aload" type='button' value='上传附件' onClick='javascript:$(& ...

  8. web前端兼容性整理+完善

    [技巧类] 1.对一些标签统一规范. 2.padding,marign,height,width 写好标准头 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1 ...

  9. powerdesigner低版本打开高版本方式为只读导致无法保存PD只读read-only-mode

    由于版本号不一致 打开PD文件后提示: 点击[确定]后打开,点击[取消]后打不开 但打开后修改完毕保存提示: 解决办法: pdm文件实际上是个xml文件,直接用文本编辑器打开该文件修改版本号即可 把根 ...

  10. select标签使用 三目运算符

    <td> <select id="roleName" name="roleName" class="input" styl ...