1,servlet生命周期
- 当servlet第一次调用的时候会触发init函数,该函数之调用一次把servlet实例装载到内存。
- 然后去调动servlet的service函数。
- 第二次访问servlet的时候直接调用service函数。
- 当web应用reload 或者tomcat关闭或者关机的时候都会调用servlet的destory函数,该函数销毁servlet。
2,开发servlet的三种方式
(1)实现servlet接口
(2)通过继承GenericServlet
(3)通过继承HttpServlet
下面介绍三种实现方式:
※ 第一种:实现servlet接口
1,新建MyServelet类
public class MyServelet implements Servlet {
// 这个函数用于初始化servlet(类似类构造函数),该函数只会调用一次(当用户第一次访问servlet时被调用)
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init servlet");
}
// 得到servletConfig对象
@Override
public ServletConfig getServletConfig() {
return null;
}
// 得到servlet的配置信息
@Override
public String getServletInfo() {
return null;
}
// 这个函数用于处理业务逻辑,当用户每访问该servlet时都会被调用。
// ServletRequest:用于获取客户端浏览器的信息。
// ServletResponse:用户向客户端(浏览器)返回信息。
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
PrintWriter printWriter = res.getWriter();
printWriter.write("hello word");
System.out.println("service callback");
}
// 释放servlet实例(释放内存)
// 触发方式1,reload servelt 2,关闭tomcat 3,关机
@Override
public void destroy() {
System.out.println("destory servlet");
}
}
2,新建web.xml 并配置映射路径
<servlet>
<!-- 给你的servlet任意取名 -->
<servlet-name>MyServelet</servlet-name>
<!-- 指明servlet的路径 包名+路径 -->
<servlet-class>com.hiveview.test.MyServelet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 给你的servlet任意取名 -->
<servlet-name>MyServelet</servlet-name>
<!-- 在浏览器上输入访问该servlet的url 任意的 -->
<url-pattern>/hiveview</url-pattern>
</servlet-mapping>
3,启动tomcat服务器在浏览器上输入访问地址:
http://localhost:8080/test/hiveview
※ 第二种实现方式 (继承GenericServlet)
1,新建MyGenericServlet类
/**
* 这是第二种开发servlet的方法(继承GenericServlet)
*
*/
public class MyGenericServlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
PrintWriter printWriter = res.getWriter();
printWriter.write("hello word");
}
}
2,在web.xlm配置servlet映射关系
<servlet>
<!-- 给你的servlet任意取名 -->
<servlet-name>MyGenericServlet</servlet-name>
<!-- 指明servlet的路径 包名+路径 -->
<servlet-class>com.hiveview.test.MyGenericServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 给你的servlet任意取名 -->
<servlet-name>MyGenericServlet</servlet-name>
<!-- 在浏览器上输入访问该servlet的url 任意的 -->
<url-pattern>/MyGenericServlet</url-pattern>
</servlet-mapping>
<servlet>
3,启动tomcat服务器在浏览器输入访问路径:
http://localhost:8080/test/MyGenericServlet
※ 第三种实现方式(继承HttpServlet)
1,新建类 MyHttpServlet
/**
* 这是第三种开发servlet方法(通过继承httpServlet)
*
*/
public class MyHttpServlet extends HttpServlet {
// 处理get请求
// req:用于获得客户端(浏览器)的信息
// res:用户向客户端(浏览器)返回信息
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
// 处理post请求
// req:用于获得客户端(浏览器)的信息
// res:用户向客户端(浏览器)返回信息
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.write("hello word");
}
}
2,在web.xml配置映射信息
<servlet>
<!-- 给你的servlet任意取名 -->
<servlet-name>MyHttpServlet</servlet-name>
<!-- 指明servlet的路径 包名+路径 -->
<servlet-class>com.hiveview.test.MyHttpServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 给你的servlet任意取名 -->
<servlet-name>MyHttpServlet</servlet-name>
<!-- 在浏览器上输入访问该servlet的url 任意的 -->
<url-pattern>/MyHttpServlet</url-pattern>
</servlet-mapping>
3,启动tomcat服务器在浏览器输入访问地址:
http://localhost:8080/test/MyHttpServlet
项目下载地址:http://download.youkuaiyun.com/detail/tianyejun6/9724871
3,get提交和post提交区别
- get安全性小于post因为get会把访问信息暴露在浏览器地址栏。
- get提交内容信息一般不要大于2k,post提交内容一般不要大于64k。
- 访问速度get大于post。
- get可以保留uri中的参数便于保留。