标记文本 servlet是用java语言编写并应用到WEB服务器端的扩展技术,它先于JSP产生(服务器在执行JSP页面时,会将JSP页转换为SERVLET类),可以方便地对WEB应用中的HTTP请求进行处理,Servlet对象主要封装了对HTTP请的处理和转发视图,并且它的运行需要Servlet容器(Tomcat,JBoss)的支持,Servlet对象对WEB应用进行了封装,提供了Servlet对WEB应用的编程接口,还可以对HTTP请求进行相应的处理,如处理提交数据,会话跟踪,读取和设置HTTP头信息。Servlet不仅拥有JAVA提供的API,而且还可以调用Servlet封装的Servlet API编程接口。因此,在在业务功能方面是十分强大的。 Servlet对象在Servlet容器启时被初始化,当第一交被请求时,Servlet容器将其实例化,此时它驻存于内存之中,如果存在多个请求,那么Servlet不会再被实例化,扔然由些Servlet对其进行处理,每个请求是一个线程,而不是一个进程,因此,Servlet对请求处理的性能是十分高效的。
Servlet与JSP的区别
Servlet是使用JavaServlet 接口中(API)运行在WEB应用服务器上的JAVA程序,其功能十分强大,不但可以处理HTTP请求中的业务逻辑,而且还可以输出HTML代码来显示指定页面,而JSP是一种在Servlet规范之上的动态 网页技术 ,在JSP页面中,同样可以编写 业务逻辑 处理HTTP请求,也可以通过HTML代码来编辑页面,在实现功能上Servlet与JSP貌似相同,实侧存在一定的区别,表现如下: 1,角色不同 JSP页面可以存在HTML代码与JAVA代码共存的情况,而SERVLET需要承担客户请求与业务处理的中间角色,只有调用固定的方法才能将动态内容输出为静态的HTML,所以JSP更具有显示层的角色。 2.编程 方式不同 servlet与JSP在编程方法上存在很大的区别,使用servlet开发WEB应用程序需要遵循java语言的标准,而JSP需要遵循一定的脚本语言规范,在servlet代码中,需要调用SERVLET提供的相关API接口方法,才可以对HTTP请求及业务进行处理,对于业务逻辑方面的处理功能更加强大,而在JSP页面中,通过HTML代码与JSP内置对象实现对HTTP请求及页面的处理,其显示界面的功能更加强大。 3.servlet需要编译后运行, servletf需要在java编译器编译后才运行在WEB容器中运行,而JSP则与之相反,JSP由JSP Container对其进行管理,它的编译过程也由JSP Container对JSP进行自动编译 ,所以无论JSP文件是否被创建还是被修改,都不需要对其进行编译就可以执行。 4.速度不同 由于JSP页面由JSP Container对其进行管理 ,在每次执行不同内容的动态JSP页面时,JSP container都需要对其进行自动编译,所以,它的执行效率低于Servlet的执行效率,而servlet在编译完成之后,不需要再次编译,可以直接获取及输出动态内容 。 说明:如果每句HTML用SERVLER来的固定方法来输出,则操作过于复杂,而且在页面之中往往还需要用到CSS,JS等,所以操作十分繁琐,针对这一问题,产生了JSP.
-
Servlet代码结构, 在java中,通常所说的servlet是指HTTPServlet对象,在声明一个对象为Servlet时,需要继承HTTPServlet这个抽象类。 -
Servlet开发 servlet的创建十分简单,主要有两种方法:第一种方法为创建一个普通的JAVA类,使这个类继承HttpServlet类,再注册Servlet对象,可以通过用@WebServlet注解声明的方式实现,也可以通过配置web.xml文件的方式实现,此方法操作比较繁琐,在快速开发中通常不被采纳,较而使用第二种方法即直接通过IDE集成开发工具进行创建。 new-other命令,在打开的new窗体中选择web标签下的Servlet选项,并单击next,在打开的创建Servlet的窗口中,输入包名和Servlet类名,单击next,选择自动创建所需要继承的函数,单击finish. public class DemoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(“utf-8”); response.setContentType(“text/html;charset=utf-8”); PrintWriter out = reponse.getWriter();//获取请求输出流对象 out.printIn("《html>"); out.printIn("《HEAD> <TITLE》servlet实例我《/TITLE></HEAD》《/html>"); String address = request.getParameter(“to”); address (address==null)?"":address;//对address做非null处理 String url= null; swithch(address){ case “baidu” url = “www.baidu.com”; break; case “qq” url = “www.qq.com”; break; default: url = “www.xjdydq.com”; break; }response.sendRedirect(url); } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { request.setCharacterEncoding(“utf-8”); response.setContentType(“text/html;charset=utf-8”); request.getRequestDispatcher("/admin/AdminBookServlet? method=findAll").forward(request, response); } catch (Exception e) { if(e instanceof FileUploadBase.FileSizeLimitExceededException) { request.setAttribute(“msg”, “您上传的文件超出了15KB”); } } } } 如果我们在URL里面输:http://127.0.0.1:8080[项目名称]/demoServlet?to=baidu
Servlet2.0的配置方式
servlet3.0技术支持注解的方式实现URL映射,但想要Servlet2.0 版本的Servletr对象正常地运行,需要修改WEB项目的配置文档,以告智WEB容器哪个请求调用哪个Servlet对象进行处理,相当于对servletf进行注册,servlet的配置包含在WEB-INF/web.xml文件中,主要通过下面两步进行设置 1.声明Servlet对象。 在web.xml文件中,通过,《servlet> 标签声明一个Servlet对象,在此标签下包含两个子元素,分别为《servler-name》与《servlet-class>,其中《servler-name》用于指定servlet的名称,此名称可以为自定义的名称;《servlet-class>元素用于指定Servlet对象的位置,即填写Servlet对象的完整类名, encodingFilter com.itheima.web.filter.EncodingFilter 2.映射Servlet 在web.xml文件中声明了Servlet对象后,需要映射访问Servlet的URL,此操作使用《servlet-mapping>标签进行配置,《servlet-mapping>标签包含两个子元素,分别为《servlet-name>和《url-pattern>,其中《servlet-name>元素与声明Servlet对象《servlet标签中《servlet-name>元素相对应,不可以随意命名,《url-pattern>元素用于映射访问URL,其配置方法如下: encodingFilter /*
过滤器和监听器
Servlet过滤器是从servlet2.3规范新增的功能,监听器可以监听到WEB应用程序启和关闭,创建过滤器和监听器需要继承相应的接口,并对其进行配置。
|