Servlet与JSP(配置web.xml)

ServletJSP之间的关系

jsp页面一分为二:一部分是前端页面<Login.jsp>,一部分是java代码<doLogin.jsp>
doLogin.jsp最开始页面负责登录业务逻辑的处理现在把代码移到Servlet中,实现前后端代码的分离。

 

Servlet特点

特点:服务器端程序,多线程,效率高,可移植,易使用,功能强。

  缺点:前端表现差劲。

  Servlet最大的好处:可以处理客户端传来的HTTP请求,并返回一个响应。

  ServletJSP要强大。如考虑性能,那肯定首先Servlet

Servlet类:

     |——HttpServlet

          |——doGET()

      |——doPost()

扫描二维码关注公众号,回复: 953026 查看本文章

  会调用javax.servlet包,javax.servlet.http.HttpServlet包,这两个均为java扩展包。

  如出现报以上2个包不存在的错误,解决办法:

a.配置CLASSPATH .:d:\Tomcaat 6.0\lib\servlet-api.jar

b.将开发包保存在 %JAVA_HOME%\jdk1.6.0_02\jre\lib\ext

  注意:

  高版本的myEclipse中的Tomcat自带的servlet-api.jar,而低版本的没带的,请将开发包拷贝到jdk1.6.0_02\jre\lib\ext文件夹下。

Servlet类创建

Java中,通常所说的 Servlet 是指 HttpServlet 对象,在声明一个对象为 Servlet 时,需要继承 HttpServlet 类或者实现 Servlet 接口。

   HttpServlet 类是 Servlet 接口的一个实现类,继承此类后,需重写 HttpServlet 类中的方法对HTTP请求进行处理。

Servlet的两种编写方式

1 继承HttpServlet,重写doGet(),doPost()

2 实现Servlet,重写getServletConfig(),getServletInfo(),init(),destroy(),service()方法

      其中:

      init() 初始化

      destroy() 销毁

      service() 处理请求  ==== doGet()+doPost()

配置web.xml

<servlet>

    //设置servlet名字

    <servlet-name>sa</servlet-name>

    //设置servlet类名

    <servlet-class>com.servlet.DoReg</servlet-class>

</servlet>

//用于映射上面<servlet>中的对外访问路径

<servlet-mapping>

    //设置servlet的名称

    <servlet-name>sa</servlet-name>

    //设置servlet的请求路径

    <url-pattern>/reg.do</url-pattern>

</servlet-mapping>

Servlet的生命周期

  Servlet是服务器端小程序,因此生命周期受web容器(也可看作是服务器)的控制。

  Servlet的生命周期分:加载程序、初始化、服务、销毁、卸载5个部分。

 

 

 

Servlet的生命周期5个部分

  a.加载Servlet (构造方法)

    Web容器负责加载Servlet,当WEB容器启动时或第一次使用SERVLET时,容器会负责创建Servlet实例(需配置web.xml指定servlet的位置),成功加载后,web容器会通过映射的方式对Servlet进行实例化。

  b.初始化 init()方法)

    servlet被实例化后,容器将调用init()方法初始化这个对象。

    初始化包括建立数据库连接、读取源文件信息等。

    如初始化失败,则此Servlet将被直接卸载(注意,不是直接销毁,而是直接卸载)。

  c.处理服务 service()方法)

    当有请求提交时,servlet调用service()方法(常用的有doGet()doPost())进行处理。

    service()中,可通过ServletRequest接收客户的请求,也可通过ServletResponse响应客户信息。

  d.销毁 destory()

    WEB容器关闭或检测到一个Servlet要从容器中被删除时,会自动调用destory()方法,释放实例所占用的资源。(注意:销毁servlet实例,并不是删掉了servlet实例)

  e.卸载

    在销毁后,该实例将等待被垃圾收集器回收,如在被回收前再次使用此servlet,会重新用init()方法初始化。

  需要提醒的是:

  在正常情况下,Servlet只会初始化一次,而处理服务会调用多次,销毁也只会调用一次。但如果一个servlet长时间不使用,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化的操作,即在特殊情况下初始化可能会进行多次,销毁也可能进行多次。

Servlet API常用接口和类

(一)Servlet接口

对请求进行处理。

任何一个Servlet对象都要直接或间接地实现javax.servlet.Servlet接口。

init(ServletConfig config)

//Servlet实例化后,Servlet容器调用该方法来完成初始化工作

service(ServletRequest request, ServletResponse response)

//用于处理客户端的请求

distroy()

//Servlet对象从Servlet容器中移除时,调用该方法,释放资源

getServletConfig()

//用于获取Servlet对象的配置信息,返回ServletConfig对象

getServletInfo()

//返回有关Servlet的信息,它是纯文本格式字符串,如作者、版本等

(二)ServletConfig接口

位于javax.servlet包中,它封装了Servlet的配置信息。

getInitParameter(String name)

//返回String类型名称为name的初始化参数值

getInitParameterNames()

//获得所有初始化参数名的枚举集合

getServletContext()

//用于获取Servlet上下文对象

getServletName()

//返回Servlet对象的实例名

(三)HttpServletRequest接口

getContextPath()

//返回请求的上下文路径,以"/"开始

getCookies()

getMethod()

getQueryString()

getRequestURI()

getRequestURL()

getServletPath()

getSession()

(四)HttpServletResponse接口

addCookie(Cookie cookie)

sendError(int sc)

sendError(int sc, String msg)

sendRedirect(String location)

(五)GenericServlet

(六)HttpServlet

service() //服务

doGet() //get提交

doPost() //post提交

doPut()

doDelete()

doHead()

doTrace()

doOption()

Servlet跳转

客户端跳转(重定向)

request.sendRedirect(url);

服务器端跳转(转发)

request.getRequestDispatcher(url).forward(request, response);

猜你喜欢

转载自blog.csdn.net/qq_40369944/article/details/79605224