Servlet概述,生命周期,相关接口,HttpServlet,Servlet的编译,配置,处理GET/POST
来源:互联网 发布:windows平板 游戏横屏 编辑:程序博客网 时间:2024/06/05 20:14
Servlet概述
为什么需要Servlet:
Servlet程序替代JSP中的JAVA代码
什么是Servlet :
Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求并做出响应的程序
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServletTest extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=GBK");
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的生命周期:
:
实例化: Servlet容器创建Servlet的实例
初始化: 该容器调用init()方法
请求处理:如果请求Servlet,则容器调用service()方法
服务终止:销毁实例之前调用destroy()方法
public class HelloServlet implements Servlet {
prvate ServletConfig config;
Public void destory();
public ServletConfig getServletConfig(){
return config;
}
public void init(ServletConfig config)throws ServletException{
this.config=config;
System.out.println("初始化!");
}
Public void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException{
PrintWriter out = res.getWrite();
out.println("Hello world");
out.close();
}
public void destroy() {
super.destroy();
System.out.println("释放资源!"); }
}
Servlet相关接口:
ServeltConfig接口
在Servlet初始化过程中获取配置信息
一个Servlet只有一个ServletConfig对象
ServeltConfig接口的常用方法
String getInitParameter(String name) 获取web.xml中设置的以name命名的初始化参数值
ServletContext getServletContext() 返回Servlet的上下文对象引用
ServeltConText接口
获取Servlet上下文
ServeltConText接口的常用方法
ServletContext getContext(String path) 返回服务器上与指定URL相对应的ServletContext对象
void setAttribute(String name,Object obj) 设置Servlet中的共享属性
Object getAttribute(String name) 获取Servlet中设置的共享属性
GenericServlet抽象类
提供了Servlet与ServletConfig接口的默认实现方法
GenericServlet的常用方法
String getInitParameter(String name) 返回服务器上与指定URL相对应的ServletContext对象,实际上是调用ServletConfig接口的同名方法
ServletContext getServletContext() 返回Servlet的上下文对象引用,实际上是调用ServletConfig接口的同名方法
void init() 初始化Servlet
HttpServlet类:
HttpServlet继承于GenericServlet
处理HTTP协议的请求和响应
HttpServlet的方法
void doGet(HttpServletRequest request,HttpServletRresponse response) 以Get请求服务时调用
void doPost(HttpServletRequest request,HttpServletRresponse response) 以Post请求服务时调用
使用doXxx()接收用户请求
doGet():用户使用get方式提交请求时调用
doPost():用户使用post方式提交请求是调用
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方法体内容
}
}
由service()方法根据表单提交方法自动调用doXxx()方法
Servlet的编译:
使用命令行方式编译Servlet的步骤
打开命令行窗口
进入到servlet类文件所在目录
使用javac命令执行编译
将编译生成的.class文件拷贝到class目录下
Servlet的配置:
在web.xml文件中配置Servlet
<web-app>
<servlet>
<servlet-name> HttpServletTest </servlet-name>
<servlet-class>cn.jbit.servlet. HttpServletTest </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> HttpServletTest </servlet-name>
<url-pattern>/HttpServletTest </url-pattern>
</servlet-mapping>
</web-app>
获取Servlet初始化参数:
Servlet初始化参数配置
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>org.jbit.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>initParam</param-name>
<param-value>Hello Servlet</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
获取初始化参数
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("处理请求时,doGet()方法被调用。");
String initParam = getInitParameter("initParam");
System.out.println(initParam);
}
获取Servlet上下文参数
配置Servlet上下文
<web-app>
<context-param>
<param-name>contextParam</param-name>
<param-value>Hello Servlet</param-value>
</context-param>
<!--省略其他配置-->
</web-app>
读取Servlet上下文
public class HelloServlet extends HttpServlet {
// …省略其他代码
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("处理请求时,doGet()方法被调用。");
String initParam = getInitParameter("initParam");
String contextParam =
this.getServletContext().getInitParameter("contextParam"); System.out.println("Servlet初始化参数" + initParam);
System.out.println("系统初始化参数" + contextParam);
}
}
使用Servlet处理GET/POST请求
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
String pass = request.getParameter("password");
String user = request.getParameter("loginName");
RequestDispatcher dispatcher = null;
if (user.equals("accp") && pass.equals("accp")) {
request.setAttribute("loginname", user);
dispatcher = request.getRequestDispatcher("ok.jsp");
dispatcher.forward(request, response);
} else {
response.sendRedirect("login.jsp");
}
}
HttpServletRequest类常用方法
String getParameter(String param) 获取客户端请求数据
void setCharacterEncoding(String encoding) 设置输入字符集
HttpServletResponse类常用方法
void setContentType(String contType) 设置输出字符集
void sendRedirect(String url) 让浏览器重定向到指定的资源
RequestDispatcher类
作用:实现请求转发
使用步骤
获取RequestDispatcher类
RequestDispatcher dispatcher
= request.getRequestDispatcher(url);
//参数url是欲转发的页面或者Servlet的URL地址
实现转发
dispatcher.forward(request, response);
- Servlet概述,生命周期,相关接口,HttpServlet,Servlet的编译,配置,处理GET/POST
- Servlet生命周期 HttpServlet Mapping配置
- Servlet的生命周期与相关接口
- servlet httpservlet tomcat配置servlet
- 与Servlet相关类的层次结构及HttpServlet的生命周期
- Servlet的概述以及生命周期
- Servlet的post、get接收
- Servlet的get请求和post请求处理
- servlet post get乱码
- Servlet(6)Servlet三种开发方式之继承GenericServlet、HttpServlet及get和post提交表单方式的区别
- [Servlet]Servlet的生命周期
- 【Servlet】Servlet的生命周期
- Servlet的POST和GET的区别
- Servlet的生命周期概述;设置Servlet的启动时加载
- [Jweb] Servlet 生命周期, TestLifeCycleServlet extends HttpServlet
- servlet get和post的区别
- servlet中Get&Post方法的比较
- servlet ----post和get请求的区别
- Regionals 2012, North America - Greater NY 解题报告
- 标准模板库(STL)学习探究之vector容器
- Linux常用命令详解之文件搜索命令三
- 数据结构(1)——栈
- Linux常用命令详解之帮助命令
- Servlet概述,生命周期,相关接口,HttpServlet,Servlet的编译,配置,处理GET/POST
- Linux常用命令详解之压缩解压命令
- iOS 播放flash视频文件
- 2013年10款浏览器HTML5跑分结果
- Linux档案与目录管理
- 遇到的问题----tomcat服务器启动时Socket bind failed
- Linux常用命令详解之网络通信命令
- Windows下的SVN环境搭建详解
- Java I/O流-SequenceInputStream