- 浏览: 91074 次
文章分类
最新评论
servlet:利用java技术开发动态网页的技术,是学习javaweb的基础。
1、他是用web容器调用和执行的
2、他是java语言写de
3、按照servlet规范编写
4、功能强大,能完成所有服务器端的所有需求
5、是jsp的基础
servlet的生命周期
1、web容器首先去检查是否已经装载并创建了该servlet的实例;
2、装载并创建该servlet的一个实例
3、调用实例的init()方法;
4、创建HttpServletRequest和HttpServletResponse实例,调用servlet的service()方法,请求和响应作为service()方法的参数。
5、web应用/容器 被停止或重启,卸载之前调用Servlet的destroy()方法;
开发Servlet的3中方法:
1、实现Servlet接口(servlet-api.jar)
2、继承HttpServlet
3、继承GenericServlet
根据Servlet规范,需要部署Servlet,部署在web.xml文件中
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.nick.server.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
注:每次localhost:8182/web/test1这个请求时,都会调用org.nick.server.MyServlet里面的service()方法,第一次调用和关闭|重启web容器时,会调用init()和destroy()方法。
web容器启动时,会检查该servlet是否存在实例。
执行结果:
最先执行
8182
再次调用
8182
再次调用
信息: Stopping service Catalina
摧毁前调用
页面输出:
ok
8182
联想:一个请求需要单独写个Servlet?
使用继承GenericServlet 需要复写service()方法,也是一个请求需要一个Servlet
使用继承HttpServlet,需要复写doGet()和doPost()方法,也是一个请求一个Servlet
get与post请求的区别
1、post比较安全
2、get数据<2k,post理论无限制,最好<64k
3、get速度快
4、get保留uri地址,利于收藏
注:
1、一个servlet可以配置多个servlet-mapping
2、使用通配符*的灵活应用;
3、Servlet被加载到内存中后,直到web应用|容器重启或停止,才被释放,在内存中以单例存在
4、一个变量被多个用户操作时,应当添加同步机制 :
将其设置为成员变量
public class MyHttpServlet extends HttpServlet{
int s = 2;
doPost(req,rep){
synchronized(this){ s--;}
}
如果设置为局部变量,是没用的,每次调用方法,局部变量又恢复原来的值了。
5、<load-on-startup>配置,在web启动后,并没有直接将Servlet加载到内存中,而是有请求到该Servlet时,才将其放入内存中,配置该元素后,就是在web容器启动时,加载到内存中,j见spring的配置信息。
1、他是用web容器调用和执行的
2、他是java语言写de
3、按照servlet规范编写
4、功能强大,能完成所有服务器端的所有需求
5、是jsp的基础
servlet的生命周期
1、web容器首先去检查是否已经装载并创建了该servlet的实例;
2、装载并创建该servlet的一个实例
3、调用实例的init()方法;
4、创建HttpServletRequest和HttpServletResponse实例,调用servlet的service()方法,请求和响应作为service()方法的参数。
5、web应用/容器 被停止或重启,卸载之前调用Servlet的destroy()方法;
开发Servlet的3中方法:
1、实现Servlet接口(servlet-api.jar)
2、继承HttpServlet
3、继承GenericServlet
public class MyServlet implements Servlet{ //销毁实例,只调用一次 public void destroy() { System.out.println("摧毁前调用"); } public ServletConfig getServletConfig() { System.out.println("不会执行"); return null; } public String getServletInfo() { System.out.println("不会执行"); return null; } //初始化servlet,将其实例存放在内存中,只调用一次 public void init(ServletConfig arg0) throws ServletException { System.out.println("最先执行"); } //该方法在每次请求时都会调用,请求和响应作为参数 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println(arg0.getLocalPort()); System.out.println("再次调用"); //如何在浏览器中显示? arg1.getWriter().println("ok"); arg1.getWriter().println(arg0.getLocalPort()); } }
根据Servlet规范,需要部署Servlet,部署在web.xml文件中
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.nick.server.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
注:每次localhost:8182/web/test1这个请求时,都会调用org.nick.server.MyServlet里面的service()方法,第一次调用和关闭|重启web容器时,会调用init()和destroy()方法。
web容器启动时,会检查该servlet是否存在实例。
执行结果:
最先执行
8182
再次调用
8182
再次调用
信息: Stopping service Catalina
摧毁前调用
页面输出:
ok
8182
联想:一个请求需要单独写个Servlet?
使用继承GenericServlet 需要复写service()方法,也是一个请求需要一个Servlet
<servlet> <servlet-name>MyGenericServlet</servlet-name> <servlet-class>org.nick.server.MyGenericServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyGenericServlet</servlet-name> <url-pattern>/test2</url-pattern> </servlet-mapping>
public class MyGenericServlet extends GenericServlet { @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { arg1.getWriter().print("test2"); } }
使用继承HttpServlet,需要复写doGet()和doPost()方法,也是一个请求一个Servlet
<servlet> <servlet-name>MyHttpServlet</servlet-name> <servlet-class>org.nick.server.MyHttpServlet</servlet-class> </servlet>
public class MyHttpServlet extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse rep){ doPost(req,rep); } public void doPost(HttpServletRequest req,HttpServletResponse rep){ try { System.out.println(req.getParameter("name")); rep.setCharacterEncoding("gbk"); rep.getWriter().print("你好"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
get与post请求的区别
1、post比较安全
2、get数据<2k,post理论无限制,最好<64k
3、get速度快
4、get保留uri地址,利于收藏
注:
1、一个servlet可以配置多个servlet-mapping
2、使用通配符*的灵活应用;
3、Servlet被加载到内存中后,直到web应用|容器重启或停止,才被释放,在内存中以单例存在
4、一个变量被多个用户操作时,应当添加同步机制 :
将其设置为成员变量
public class MyHttpServlet extends HttpServlet{
int s = 2;
doPost(req,rep){
synchronized(this){ s--;}
}
如果设置为局部变量,是没用的,每次调用方法,局部变量又恢复原来的值了。
5、<load-on-startup>配置,在web启动后,并没有直接将Servlet加载到内存中,而是有请求到该Servlet时,才将其放入内存中,配置该元素后,就是在web容器启动时,加载到内存中,j见spring的配置信息。
发表评论
-
41、解决HttpServletResponse输出的中文乱码问题
2015-04-12 21:48 1215response返回有两种,一种是字节流outputs ... -
41、轮询
2015-04-12 08:50 0浏览器关闭使session失效 ... -
40、spring ajax/easyui 中文乱码的解决
2015-04-04 14:52 692使用spingmvc,在JS里面通过ajax发送请求,并 ... -
39、.net
2015-03-28 23:12 542熟悉java编程,自然学习c#就会比较容易,有几个点需要说明下 ... -
38、servlet-- JSTL+EL(c标签、${})
2015-03-23 15:57 780参看:http://www.cnblogs.com/xdp-g ... -
37、servlet--jsp
2015-03-23 15:07 493不管是JSP还是Servlet,虽然都可以用于开发动 ... -
36、servlet--防止表单重复提交
2015-03-23 14:33 7101、在网络延迟会或服务器反应过慢的情况下让用户有时间点击多次s ... -
35、servlet--servletContext
2015-03-22 13:41 474servletContext接口是Servlet中最大的一个接 ... -
34、servlet--会话技术/购物车demo/y验证码
2015-03-21 23:40 586会话Session and Cookie 1、session: ... -
33、servlet--转发/web开发指导思想
2015-03-21 12:31 445转发: req.getRequestDispatcher(&q ... -
32、servlet --重定向/下载/缓存/中文乱码
2015-03-20 23:21 1055重定向1、sendRedirect rep.sendRedir ... -
30、servlet---tomcat原理
2015-03-20 18:20 675Servlet出现得早,servlet很强大,但是se ... -
29、servlet--jsp执行过程
2015-03-20 15:08 446J2EE的13种核心技术:JDBC、JNDI、EJBs、 ... -
29、springmvc+spring+mybatis+oracle12的demo
2015-03-15 20:29 0每次搭建都要重头搭建,累~~ 注意:用12c的jdbc 在安 ... -
27、Tomcat多次加载项目问题
2015-03-12 15:30 563错误配置方式: <Host name="lo ... -
26、数据分页(jsp+servlet)
2015-03-12 15:19 472随着数据库中存储的数据的增多,满足用户查询条件的数据也 ... -
llll.文档设计
2015-03-11 13:31 0设计文档与代码实现到 ... -
24、webservice_短信接口
2015-03-11 10:48 801http://blog.csdn.net/sxdtzhaoxi ... -
25、RMI_demo1
2015-03-11 10:48 426Java RMI 指的是远程方法调用 (Remote Meth ... -
23、svn
2015-03-11 10:48 422<参看>http://blog.csdn.net/ ...
相关推荐
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
现在,开发者更倾向于使用Spring MVC或Spring WebFlux等高级框架,它们提供了更简洁、更强大的Web开发方式,但底层依然基于Servlet API。 总的来说,servlet-api.jar是Java Web开发的基础,它定义了Servlet的生命...
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
在Java Web开发中,`javax.servlet-api-3.1.0.jar`是一个至关重要的组件,它代表了Servlet API的3.1.0版本,是实现服务器端动态网页处理的核心库。Servlet API是Java EE规范的一部分,由Java Community Process (JCP...
这些版本的演变展示了Servlet-API如何逐步适应Web开发的变革,从简单的请求响应模型发展到支持更复杂的应用场景,如异步处理、WebSocket通信等。了解和掌握不同版本间的差异,有助于开发者根据项目需求选择最合适的...
Servlet-api-3.0.jar是Java Servlet API的第三版实现,它是开发Web应用程序的重要组成部分,特别是在基于Java的服务器端编程中。这个库包含了用于创建和管理HTTP服务端点的接口和类,允许开发者构建动态、交互式的...
6. `javax.servlet.annotation`包:包含了各种注解,比如`@WebServlet`、`@WebFilter`和`@WebListener`,使得开发者可以通过注解方式声明Servlet、过滤器和监听器,简化了web.xml配置文件的编写。 7. `javax....
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
servlet-api,开发servlet必须的jar包,快来下载!!
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
在IT行业中,尤其是在Java Web开发领域,`javax.servlet-api`和`javax.el`库是至关重要的组件。这些库主要用于实现Servlet规范和表达式语言(EL)功能,它们为开发人员提供了与服务器交互以及处理HTTP请求的能力。...
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
Servlet 2.5 API是Java Web开发中的一个重要组成部分,它为构建动态Web应用程序提供了一组标准接口和类。这个API定义了服务器端如何处理HTTP请求并返回响应的规范。在这个"**servlet-2_5-api.zip**"压缩包中包含的"*...
Servlet-api.jar和jsp-api.jar是Java Web开发中两个非常重要的库文件,它们包含了Servlet和JSP(JavaServer Pages)的相关API,使得开发者可以构建动态Web应用程序。这两个文件通常由Java EE(Enterprise Edition)...
api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...
Servlet是Java编程语言中实现动态网页的一种方式,它接收HTTP请求并返回响应。javax.servlet包下的HttpServlet类是所有Servlet的基类,开发者通常会继承这个类来创建自己的Servlet实现。 具体来说,HttpServlet类...
Servlet-api是Java Web开发中的核心组件,主要用于构建动态web应用程序。Servlet是一种Java程序,它可以接收并响应来自Web客户端(如浏览器)的请求。在Servlet-api文档中,包含了Servlet规范、接口和类的详细说明,...
Servlet API是一组接口和类,用于定义服务器端应用程序与Web服务器之间的交互方式。4.0.1版本在前一个版本的基础上进行了一些增强和优化,例如更好的异步处理、HTTP/2支持以及对WebSocket的改进等。`javax.servlet-...