Servlet的生命周期方法:

init()
destroy()
doGet(HttpServletRequest request,HttpServletResponse response)
客户端请求封装在request中,而服务器响应则封装在response中
 
-------------------------------------------------------------------------------
 
web.xml的配置(有多个servlet就配置多个servlet 和servlet-mapping标签)
<servlet>
  <servlet-name>Servelettest1</servlet-name>
  <servlet-class>com.web.servlet.Servelettest1</servlet-class>  //全路径
  </servlet>
  <servlet-mapping>
  <servlet-name>Servelettest1</servlet-name>
  <url-pattern>/Servelettest1</url-pattern>                               //浏览请求别名,前面必须加斜杠
  </servlet-mapping>
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{

        PrintWriter pw = response.getWriter();                              //这个输出流是从web服务器到浏览器,打印在web服务器中
        pw.print("hello world");
        pw.close();
    }

    public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
        PrintWriter pw = response.getWriter();
        pw.print("hello world");
        pw.close();
    }

在index.jsp中

<a href="./Servelettest1">hello world<a>
<form action="Servelettest1" method="post">     //Servelettest1是 <url-pattern>/Servelettest1</url-pattern>
<input type="submit" value="提交">
http://localhost:8088/Servelettest1                            //Servelettest1是 <url-pattern>/Servelettest1</url-pattern>
-----------------------------------------------------------------------------------
使用request和response
response.getWriter(); 
//获取客户机参数方法
request.getParameter("username ");             //获取参数   index.jsp对应代码段为<a href="Servelettest1?username=boyce">hello world<a>
servlet接受请求封装信息:

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
        String username = request.getParameter("username");                                          //获取用户名
        String password = request.getParameter("password");
        PrintWriter pw = response.getWriter();
        pw.print("hello world"+username+password);
        pw.close();
    }

对应jsp:

<form action="Servelettest1" method="post">
用户账号:<input type="text" name="username">
用户密码:<input type="password" name="password">
<input type="submit" value="提交">
</form>
-----------------------------------------------------------
server.xml:                                                                                                                //从客户端到服务器的中文乱码
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"  URIEncoding="utf-8"
               redirectPort="8443" />
遇到server.xml拒绝访问解决方法:
进去选择编辑,然后选择user权限勾选完全控制即可
 
//从服务器到客户端的中文乱码
response.setCharacterEncoding("utf-8");
response.setContentType(text/html;charset=utf-8)    
 
servlet实现页面跳转:
package com.web.servlet;

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servelettest2 extends HttpServlet{
    public void init(){

    }
    public void destroy(){
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
        String uname = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("Servelet2被调用");
        //页面跳转
        response.sendRedirect("Servelettest3");                                                    //实现页面的跳转
    }
}

方法二:

RequestDispatcher rd = request.getRequestDispatcher("Servelettest3");
rd.forward(request,response);

index.jsp:

<form action="Servelettest2" method="post">
用户账号:<input type="text" name="username">
用户密码:<input type="password" name="password">
<input type="submit" value="提交">
</form>
doPost中文乱码解决:

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
        request.setCharacterEncoding("UTF-8");                                        //解决请求服务器中文乱码
        response.setCharacterEncoding("UTF-8");                                     //解决服务器到客户端乱码问题
        response.setContentType("text/html; charset=utf-8");                  //解决服务器到客户端乱码问题
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        PrintWriter pw = response.getWriter();
        pw.print("hello world"+username+password);
        System.out.println(username+password);
        pw.close();
    }

过滤器:

<filter>
  <filter-name>/filter1</filter-name>
  <filter-class>com.web.servlet.CharacterFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>/filter1</filter-name>
  <url-pattern>/*</url-pattern>                                                       //星号代表所有的传输都要经过它
  </filter-mapping>
package com.web.servlet;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharacterFilter implements Filter{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
        arg0.setCharacterEncoding("utf-8");
        arg1.setCharacterEncoding("utf-8");
        arg1.setContentType("text/html; charset=utf-8");
        arg2.doFilter(arg0, arg1);

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}
监听器:
servlet中定义了多种类监听器,它们主要用于监听ServletContext,HttpSession和ServletRequest这三个域对象:
 
HttpSessionListener接口用于监听HttpSession的创建与销毁
 
(1)创建一个Session时,sessionCreated(HttpSessionEvent se)方法将会被调用。
(2)销毁一个Session时,sessionDestroy(HttpSessionEvent se)方法将会被调用。
Session域对象创建和销毁时机
创建:yoghurt第一次访问时,服务器创建session
销毁:如果用户30分钟会使用,服务器将会销毁session,我们在web.xml里面也可以诶之session失效时间
<session-config>
  <session-timeout>1</session-timeout>            //设置监听时长为一分钟,若不修改,默认为30分钟
 </session-config>
package com.web.servlet;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
//实现接口HttpSessionListener
public class OnlineCounterListener implements HttpSessionListener,HttpSessionAttributeListener{

    private int count=0;
    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        // TODO Auto-generated method stub
        count++;
        System.out.println("有新用户访问,当前访问人数为:"+count);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        // TODO Auto-generated method stub
        count--;
        System.out.println("有一位退出,当前人数为:"+count);

    }

    @Override
    public void attributeAdded(HttpSessionBindingEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent arg0) {
        // TODO Auto-generated method stub

    }

}
总结:
servlet步骤
1.创建servlet类(继承于HttpServlet)
2.三个方法:public void init() {
 
    }
 
    public void destroy() {
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response){
    }
3.通过getParameter 获取jsp中的值
String username = request.getParameter("username");
4.然后调用jdbc或Hibernate类(Dao)将对象进行增删查改
5.跳转页面
        // 转发到注册结果页面
        request.getRequestDispatcher("result.jsp").forward(request, response);

Servlet的使用方法详细说明的更多相关文章

  1. 《收藏》对servlet原理讲解特别详细

    转载:http://blog.csdn.net/javaloveiphone/article/details/8154791 内容: 一.先从servlet容器说起:大家最为熟悉的servlet容器就 ...

  2. quartz实现定时功能实例详解(servlet定时器配置方法)

    Quartz是一个完全由java编写的开源作业调度框架,下面提供一个小例子供大家参考,还有在servlet配置的方法 Quartz是一个完全由java编写的开源作业调度框架,具体的介绍可到http:/ ...

  3. win8.1系统的安装方法详细图解教程

    win8.1系统的安装方法详细图解教程 关于win8.1系统的安装其实很简单 但是有的童鞋还不回 所以今天就抽空做了个详细的图解教程, 安装win8.1系统最好用U盘安装,这样最方便简单 而且系统安装 ...

  4. WEB启动时就加载servlet的dopost方法

    web启动的时候可以加载servlet的init方法,无法加载dopost方法,如果你需要什么内容在启动的时候执行,可以将内容放到init方法里面,dopost方法,是在客户端使用post请求的时候才 ...

  5. S5中新增的Array方法详细说明

      ES5中新增的Array方法详细说明 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wor ...

  6. ASP.NET MVC3 局部页面@RENDERBODY @RENDERPAGE@RENDERSECTION使用方法详细说明

    转载自:http://blog.163.com/wenchangqing_live/blog/static/173722309201211299817278/ asp.net mvc3局部页面使用方法 ...

  7. IOS--UILabel的使用方法详细

    IOS-UILabel的使用方法详细   //UILabel的使用 UILabel *oneLabel = [[UILabel alloc] init]; // 最经常使用的 oneLabel.fra ...

  8. IOS--UITextView 多行文本的输入和显示 的使用方法详细

    IOS--UITextView 多行文本的输入和显示 的使用方法详细   // UITextView的常用方法 主要用来输入和显示多行文本信息 UITextView *oneTextView = [[ ...

  9. IOS--UIPageControl的使用方法详细

    IOS--UIPageControl的使用方法详细   // UIPageControl的常用方法 UIPageControl *onePageControl = [[UIPageControl al ...

随机推荐

  1. 《深入理解bootstrap》读书笔记:第一章 入门准备

    一.bootstrap框架简介 Bootstrap是最流行的前端开发框架. 什么是框架:开发过程的半成品. bootstrap具有以下重要特性: (1)完整的CSS样式插件 (2)丰富的预定义样式表 ...

  2. 获取<img src="sdf.jpg" Big="sf.jpg">中的big的值

    原代码: <img src="sdf.jpg" Big="sf.jpg" onclick="getsrc($(this).attr(" ...

  3. 缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别

    先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cache.  我们再用. ...

  4. CSS实现底部固定

    html代码结构 <body> <div class="wrap"> <div class="head"></div& ...

  5. easyui的textbox和validatebox的 赋值区别

    区别代码如下: textbox:$('userId').textbox('setValue','aaa'); validatebox :$('userId').val('aaa');  

  6. rehat 出现GDB debuginfo-install 问题处理

    本人使用rhel 6    GDB 调试代码时,出现以下错误: Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.166 ...

  7. jquery+css3实现3d滚动旋转

    最近有个漂亮妹子一直在向我推销潭州的视频,BUT我以前就看了一次觉得挺水的,就对那个妹子表示吾孤高.你们那玩意没意义的很弱.然后那个漂亮妹子锲而不舍的对我发链接,这个效果会吗,这个幻灯会写吗...我也 ...

  8. JavaScript-也来谈--闭包

    闭包,以前研究过,可能是当初理解的不够透彻,现在又忘了,(给自己一个台阶下`-...)毕竟js一直没怎么用, 为了防止自己过段时间再忘了,写篇重要的闭包重点, 这样时不时也能温习下知识,不用每次想了解 ...

  9. 免费的HTML5连载来了《HTML5网页开发实例详解》连载(二)

    最近新浪.百度.腾讯.京东.大众点评.淘宝等流行的网站都加大了招聘HTML5的力度,HTML5开发人员成了抢手货,本次连载的是由大众点评前端工程师和一淘网前端工程师基情奉献的<HTML5网页开发 ...

  10. 如何给wordpress外部链接自动添加nofollow

    wordpress多作者博客可以丰富网站的内容,但同时也会产生一些无关的链接,例如有些投机的人会考虑在文章中随意添加外部链接,如果你不想给这些外部链接传递权重,你需要给这些外部链接加上 rel=&qu ...