2017.11.2 JavaWeb----第六章 Servlet技术
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技术的更多相关文章
- 第六章P2P技术及应用
第六章P2P技术及应用 P2P技术在我们日常生活中非常实用,例如我们常用的QQ.PPLive.BitTorrent就是基于P2P技术研发.下面将本章中的重点内容进行归纳. 文章中的Why表示产生的背景 ...
- Java Web程序设计笔记 • 【第5章 Servlet技术】
全部章节 >>>> 本章目录 5.1 Servlet 技术介绍 5.1.1 为什么需要Servlet 5.1.1 Servlet 简介 5.1.2 Java Web 处理流 ...
- 2017.11.15 JavaWeb的学生体质管理系统
(11)案例-----学生身体体质信息管理系统的开发 11.1 功能划分: 1.添加记录模块:完成向数据库添加新纪录 2.查询记录模块:完成将数据库的记录以网页的方式显示出来,一般采用有条件的查询 3 ...
- JavaWeb——第1章Web技术概述
Web本意是蜘蛛网的意思,现常指Internet的Web技术.Web技术提供了方便的信息发布和交流方式,是一种典型的分布式应用结构,Web应用中的每一次信息交换都要涉及客户端和服务器. 一.Inter ...
- JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典
总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...
- Java Web程序设计笔记 • 【第6章 Servlet技术进阶】
全部章节 >>>> 本章目录 6.1 应用 Servlet API(一) 6.1.1 Servlet 类的层次结构 6.1.2 使用 Servlet API 的原则 6.1 ...
- 2017.11.12 web中JDBC 方式访问数据库的技术
JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...
- 2017.2.28 activiti实战--第六章--任务表单(二)外置表单
学习资料:<Activiti实战> 第六章 任务表单(二)外置表单 6.3 外置表单 考虑到动态表单的缺点(见上节),外置表单使用的更多. 外置表单的特点: 页面的原样显示 字段值的自动填 ...
- 2017.2.28 activiti实战--第六章--任务表单(一)动态表单
学习资料:<Activiti实战> 第六章 任务表单(一)动态表单 内容概览:本章要完成一个OA(协同办公系统)的请假流程的设计,从实用的角度,讲解如何将activiti与业务紧密相连. ...
随机推荐
- Autel MaxiSys MS908CV Diagnostic System for Commercial Vehicles
As a new member of Autel’s MaxiSys family, the MaxiSys CV is built on the powerful MaxiSys 908 platf ...
- LBS开发
功能:用户发送自动的位置,返回周围的厕所信息 思路:根据用户的经纬度信息,调用百度地图的api,查询周围的厕所位置并且返回! 步骤:进入百度地图官网注册账号,选择web api接入 我们先看开发者文档 ...
- Linux 文件锁flock 实现两个进程相互监听存活状态
表头文件 #include<sys/file.h> 定义函数 int flock(int fd,int operation); 函数说明 flock()会依参数operation所指 ...
- str 操作方法
# str 类,字符串 # name ='alex' # 首字母变大写 # test ='alex' # v= test.capitalize() # print(v) # # 大写全部变小写 # t ...
- GRE新东方推荐学习方法(2010年左右)
单词:新东方新版红宝书(<NEW GRE 词汇精选>),不用<再要你命三个> 填空:新东方绿皮书(扎实的词汇量) 阅读:1 新东方绿皮书:2 <GRE阅读 39+3全攻略 ...
- jq二级目录
CSS:.qsc_nav_main .level1 { text-align: center; height: auto; } .qsc_nav_main .level1 a { display: i ...
- Hadoop Intro - Configure 01
hadoop配置文件详解.安装及相关操作 一. Hadoop伪分布配置 1. 在conf/hadoop-env.sh文件中增加:export JAVA_HOME=/home/Java/j ...
- [转]让你的网页文本框增加光晕效果与提示,水印(类似QQ2011)
本文转自:http://www.cnblogs.com/xiaofengfeng/archive/2013/01/28/2880344.html 让你的网页文本框增加光晕效果(类似QQ2011) 我们 ...
- (转)在 VMware 中安装 HMC
在 VMware 中安装 HMC 原文:http://blog.csdn.net/ccie38499/article/details/14123493 http://www.54it.top/arch ...
- 如何才能够写出优美的C代码呢?
转载自http://developer.51cto.com/art/201601/503802.htm 面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可 ...