Servlet与JSP之间的关系
jsp页面一分为二:一部分是前端页面<Login.jsp>,一部分是java代码<doLogin.jsp>
doLogin.jsp最开始页面负责登录业务逻辑的处理,现在把代码移到Servlet中,实现前后端代码的分离。
Servlet特点
特点:服务器端程序,多线程,效率高,可移植,易使用,功能强。
缺点:前端表现差劲。
Servlet最大的好处:可以处理客户端传来的HTTP请求,并返回一个响应。
Servlet比JSP要强大。如考虑性能,那肯定首先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);
今天的文章Servlet与JSP(配置web.xml)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24919.html