Servlet与JSP(配置web.xml)

Servlet与JSP(配置web.xml)

绿林寻猫
2021-12-08 / 0 评论 / 142 阅读 / 正在检测是否收录...

ServletJSP之间的关系

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

 

Servlet特点

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

  缺点:前端表现差劲。

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

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

 

Servlet类:

     |——HttpServlet

          |——doGET()

      |——doPost()

 

  会调用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);

0

评论 (0)

取消