博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet
阅读量:6627 次
发布时间:2019-06-25

本文共 3986 字,大约阅读时间需要 13 分钟。

servlet        查看javaee api

  servlet是一个小的java程序,运行在服务器中,接收和响应从客户端(浏览器)发送过来的请求

 

1、实现servlet接口,重写5个方法

2、配置web.xml文件(在MyEclipse的WEB-INF下)  右键open with的Myeclipse XML Editor

         先配置Servlet信息

<servlet>

          配置Servlet名称,名称必须唯一

 <servlet-name>ServletDemo1</servlet-name>

           配置Servlet的完全路径(包名+类名)  最好用创建的类名右键复制 copy Qualified Name

 <servlet-class>cn.idcast.Servlet.ServletDemo1</servlet-class>

 </servlet>

          配置Servlet映射(访问路径)

 <servlet-mapping>

       配置Servlet名称,和上面的名称必须相同

 <servlet-name>ServletDemo1</servlet-name>

        配置虚拟路径(访问路径) 必须唯一

 <url-pattern>/demo1</url-pattern>

 </servlet-mapping>

3、把项目发布到网上   MyEclipse下面的那个类似邮筒的按键(Deploy MyEclipse j2ee Project to Server),选择Project和add Tomact的版本

4、启动Tomact

5、访问

 

Servlet的生命周期

生命周期:实例被创建,对外提供服务,最后销毁。

1、Servlet被创建后,然后调用init方法进行初始化。

      void init(ServletConfig config)

    注意:第一次访问的时候实例才被创建,而不是服务器一启动就创建。

      *  init只被调用一次。

2、从客户端发送的所有请求是service方法进行处理的。

        void service(ServletRequest req, ServletResponse res)

     * 有几次请求,service就调用几次

3、从服务器中移除服务,调用destory方法进行移除。

           void destory()

   *  Servlet实例当服务器关闭或者手动移除的时候,实例被消除

    *  destory只被调用一次

******* Servlet的生命周期:第一次请求的时候,Servlet实例被创建,立即调用init方法进行初始化,实例通过service方法提供服务,服务器关闭或者移除服务时,调用destory方法进行销毁。

 

Servlet和其他类的关系

Servlet接口 – GenericServlet(已经重写了5个方法)- HttpServlet(继承GenericServlet,实现了Servlet接口)

     * 如果只想重写init方法的话,只需要重写无参的init方法

 

开发步骤(最终)

1、编写一个类,继承HttpServlet

2、重写doGet和doPost方法

3、在web.xml进行配置

 

MyEclipse中创建Servlet

1、Inherited abstract methods和下面的2个方法的沟去掉 只留下doGet和doPost方法

2、Servlet/JSP Mapping URL(虚拟路径)后面的最好修改一下

 

修改Servlet模板

1、找到MyEclipse的安装路径 如D:\MyEclipse\Common\plugins\com.genuitec.eclipse.wizardx.版本.jar

2、右键压缩工具打开-templates-Servlet.java

3、然后把Servlet.java拖到桌面,打开,删除掉doGet和doPost方法里面无关的东西,并在doPost里面加上doGet(request,response);

4、拖回去之前,把MyEclipse关闭

 

 

Servlet自动加载

 Servlet默认是第一次访问时候创建实例,通过配置,服务器启动才创建实例。

   在< Servlet >标签下

         <load-on-startup>正整数</load-on-startup>  正整数的值越小,优先级越高

 

配置虚拟路径(访问路径)

<servlet-mapping>

    <url-pattern>/demo5</url-pattern>

 </servlet-mapping>

 1、完全路径匹配

 以/开头的        /demo5   或者/servlet/demo5

 访问:

2、目录匹配

    /*

访问:http://localhost/*

 3、扩展名匹配

 *.do  或者*.action

 访问:http://localhost/demo5.do

           优先级:完全路径匹配>目录匹配>扩展名匹配

 

 配置初始化参数

 在<Servlet></Servlet>标签下配置

 <init-param>

       <param-name>assasasa</param-name>

       <param-value>fdsfdsfsd<param-value>

 </init-param>

          *在某个Servlet配置,就要在那个Servlet中获取

 

ServletConfig对象 和配置文件相关    

方法:

    String  getNameServlet()   获取配置文件中Servlet的名称

     String  getInitParameter(String name)   获取初始化参数,最后得到的是<param-value>里面的值

   Enumeration getInitParameterNames()    获取初始化的参数们,返回Enumeration。Enumeration里面的方法:hasMoreElements()和nextElement()

                  用while循环遍历,方法是hasMoreElements,然后用nextElement获取,返回String,最后用getInitParameter获取参数String

 输出的话记得是要用Tomact启动,通过访问路径得到

 

package cn.idcast.Servlet;import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletDemo3 extends HttpServlet {	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		//获得ServletConfig		ServletConfig sc = getServletConfig();		System.out.println(sc.getServletName());		//获得初始化参数,得到的value里面的值		String con = sc.getInitParameter("username");		System.out.println(con);		//获取初始化的参数们		Enumeration
e = sc.getInitParameterNames(); while (e.hasMoreElements()) { String name = e.nextElement(); String value = sc.getInitParameter(name); System.out.println(value); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

 

  这个是配置文件里面的参数

ServletDemo3
cn.idcast.Servlet.ServletDemo3
username
123456
passoword
11111
ServletDemo3
/Demo3

  结果为 

 

转载于:https://www.cnblogs.com/zengjiao/p/7309376.html

你可能感兴趣的文章
Java中CAS详解
查看>>
Linux系统实战项目——sudo日志审计
查看>>
Android Application Task Activities的关系
查看>>
浅谈CSS盒子模型
查看>>
实现iFrame自适应高度,原来很简单!
查看>>
get app id
查看>>
poj 3624 0/1背包暨0/1背包的学习
查看>>
[俗一下]世界500强公司的面试问题与答案提示 [转]
查看>>
使用 Excel Services ,结合 Analysis Services 在 SharePoint 中发布报表
查看>>
SQL Server数据导入导出技术概述与比较
查看>>
format的用法
查看>>
DHCPv6 server port and DHCPv6 client port
查看>>
BitmapFactory.Options避免 内存溢出 OutOfMemoryError的优化方法
查看>>
Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片
查看>>
DNGuard 免费的DotNet加密保护工具 V1.0
查看>>
编程中的命名设计
查看>>
easyui form validate总是返回false原因
查看>>
在(CListView)列表视图中添加右键菜单的方法
查看>>
自定义服务器控件(处理不同的浏览器)
查看>>
解决IE6-IE7下li上下间距
查看>>