发布网友 发布时间:2024-09-09 22:42
共1个回答
热心网友 时间:2024-11-14 15:01
JSP中Servlet一般用来干嘛啊?Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。servlet由来servlet是在服务器上运行的小程序。这个词是在Javaapplet的环境中创造的,Javaapplet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(CommonGatewayInterface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。最早支持Servlet技术的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:客户端发送请求至服务器端;服务器将请求信息发送至ServletServlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求服务器将响应返回给客户端Servlet看起来像是通常的Java程序。Servlet导入特定的属于JavaServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。目前最新版本为3.0草案
servlet的作用是什么?在JavaWeb项目中,处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。
简单来讲:Servlet其实就是一个遵循Servlet开发的java类,Serlvet是由服务器调用的,运行在服务器端。
一张图描述Servler在B/S中的作用点:
2.Tomcat和Servlet的关系
Tomcat是Web应用服务器,是一个Servlet/JSP容器。Tomcat作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户,而Servlet是一种运行在支持Java语言的服务器上的组件。
Servlet最常见的用途是扩展JavaWeb服务器功能,提供非常安全的、可移植的、易于使用的CGI替代品。
从Http协议中的请求和响应可以得知,浏览器发出的请求是一个请求文本,而浏览器接收到的也应该是一个响应文本。但是在上面这个图中,并不知道是如何转变的,只知道浏览器发送过来的请求也就是request,我们响应回去的就用response。忽略了其中的细节,现在就来探究一下。
①:Tomcat将Http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的Http头数据读可以通过request对象调用对应的方法查询到。
②:Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,然后将response交给Tomcat,Tomcat就会将其变成响应文本的格式发送给浏览器。
JavaServletAPI是Servlet容器(tomcat)和servlet之间的接口,它定义了Serlvet的各种方法,还定义了Servlet容器传送给Servlet的对象类,其中最重要的就是ServletRequest和ServletResponse。所以说我们在编写Servlet时,需要实现Servlet接口,按照其规范进行操作。
3.Servlet接口主要方法
Servlet接口主要的3个方法:
init()方法:只会调用一次,只是在创建servlet实例的时候才会创建。
service()方法:是进行数据处理的,只要接受了一次请求,就会被调用一次
destroy()方法:销毁Servlet对象的时候调用。停止服务器或者重新部署Web应用时销毁Servlet对象,同样也是调用一次
4.编写Servlet
首先说明一点疑惑,有时候我们在一些资料上看到别人这样写:
public?class?TestServlet?implements?Servlet?{
????init()...
????service()...
????getServletConfig()...
????...
}
而在这我们要继承HttpServlet类那么问题来了,继承HttpServlet和实现Servlet有什么区别?
首先,直观的不同,Servlet是一个接口,如果实现这个接口,那么就必须实现接口里面定义的所有方法。
而HttpServlet实现了Servlet接口,并把Servlet接口中的方法实现了。
继承Httpservelt,实际上也就实现了Servlet接口。
但是我们没必要再去实现Servlet中定义的生命周期方法,因为在Httpservlet中已经有了默认实现,并且这些默认实现也挺规范和实用,doget和dopost是执行用户请求的终点,get请求会调用doget方法,post请求会执行dopost方法,我们可以在这2个方法中定义我们自己的业务逻辑。
最后,HttpServlet在实现Servlet接口的时候,已经实现了Servlet中所有的方法,因此继承自HttpSrvlet的类,不需要再去覆写相应的生命周期等方法。
4.1编写Java类,继承HttpServlet
创建一个MyServletjava类,继承HttpServlet实现service方法:
public?class?MyServlet?extends?HttpServlet?{
????@Override
????protected?void?service(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
????????//设置字符编码
????????request.setCharacterEncoding("utf8");
????????//从?request?对象中获取username,password
????????String?username?=?request.getParameter("username");
????????String?password?=?request.getParameter("password");
????????request.setAttribute("username",username);
????????request.setAttribute("password",password);
????????request.getRequestDispatcher(?"/index2.jsp").forward(request,?response);;
????}
}
4.2配置web.xml文件
web.xml配置Servlet访问路径,能让别人通过链接访问到你的Servlet:
web-app
??display-nameArchetype?Created?Web?Application/display-name
????servlet
????????servlet-nameMyServlet/servlet-name
????????servlet-classclub.sscai.demo.MyServlet/servlet-class
????/servlet
????servlet-mapping
????????servlet-nameMyServlet/servlet-name
????????url-pattern/MyServlet/url-pattern
????/servlet-mapping
/web-app
4.3jsp界面显示
index2.jsp:
html
body
h22222222/h2
username:?%=request.getParameter("username")?%
br
password:?%=request.getParameter("password")?%
/body
/html
servlet在jsp中的作用是什么?
Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java-enabledWebServer中。JavaServlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务。
最早支持Servlet技术的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:
客户端发送请求至服务器端;
服务器将请求信息发送至Servlet
Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求
服务器将响应返回给客户端
Servlet看起来像是通常的Java程序。Servlet导入特定的属于JavaServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。
JAVAServlet的优势:
Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。如果需要,还可以保存请求-响应过程中的信息。
采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质
Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中,可以从本地硬盘,或者通过网络从远端硬盘激活Servlet。
Servlet可被链接(chain)。一个Servlet可以调用另一个或一系列Servlet,即成为它的客户端。
采用ServletTag技术,可以在HTML页面中动态调用Servlet。
ServletAPI与协议无关。它并不对传递它的协议有任何假设。
像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势
Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet的Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。
一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在WebServer卸载时被卸载。
Servlet生命周期:
装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。
Server创建一个Servlet的实例
Server调用Servlet的init()方法
一个客户端的请求到达Server
Server创建一个请求对象
Server创建一个响应对象
Server激活Servlet的service()方法,传递请求和响应对象作为参数
service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法
对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次,当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。
servlet在jsp中的作用是什么?求大神帮助servlet就是对用户的请求响应,处理,并返回结果的一种程序而有了它为什么还要有jsp呢,由于servlet只能返回文本,我们不能把所有的html标记都在servlet里包装好返回,所以有了jsp这种东西,其实就是html代码中嵌入了一些jsp代码,你可以认为是servlet的运行结果,事实上,在服务器上,jsp也会编译成servlet。jsp你可以看作是html中内嵌了servlet的运行结果,界面这种靠html来表达的东西,serlvet也不用管了,它可以只管业务逻辑。
java中web开发servlet主要功能是什么?JavaWeb中servlet主要功能是承载网络连接,业务逻辑处理,比如一些编码格式的转换、登录拦截等,如下是详细解释:
1.servlet是一个类。最初没有jsp,只有servlet,也就是说最初的开发过程是.java-.class
后来因为html代码在servlet里写入太繁琐,加入了jsp类型。servlet单纯的处理后台程序。
在WEB-INF下的web.xml文件下:
servlet
???servlet-namehello/servlet-name
???servlet-classorg.lxh.servlet.HelloServlet/servlet-class///HelloServlet是类名
/servlet
servlet-mapping
???servlet-namehello/servlet-name
???url-pattern/servletdemo/url-pattern///当敲入本机地址后,/demo后/servletdemo会找到编译后的HelloServlet文件。
/servlet-mapping
具体例子如下:
1.先编写一个表单,建在D:/java/tomcatjsp/webdemo/servletdemo(新建一个文件夹)-
input.html
form?action="input"?method="get"//"post"也行
?input?type="text"?name="ref"
?input?type="submit"?value="提交"
/from
2.在编写InputServlet类
package?org.lxh.servlet?;
import?java.io.*?;
import?javax.servlet.*?;
import?javax.servlet.http.*?;
public?class?InputServlet?extends?HttpServlet{
?public?void?doGet(HttpServletRequest?req,HttpServletResponse?resp)
??????????????throws?ServletException,java.io.IOException{
??String?param?=?req.getParameter("ref")?;
??System.out.println("*************"+param)?;
?}
?public?void?doPost(HttpServletRequest?req,HttpServletResponse?resp)
??????????????throws?ServletException,java.io.IOException{
??this.doGet(req,resp)?;
?}
};
3.然后编译。
4.再在web.xml中加入这些话
servlet
???servlet-nameinput/servlet-name
???servlet-classorg.lxh.servlet.InputServlet/servlet-class
/servlet
servlet-mapping
???servlet-nameinput/servlet-name
???url-pattern/servletdemo/input/url-pattern
/servlet-mapping
5.这时运行tomcat?能找到servletdemo文件夹中的input.html,点击提交按钮。
jsp技术中servlet,可以承载很多的功能,但后期如果项目业务逻辑很复杂,会导致servlet的急剧增多,不易维护,所以又发明了javaweb,将每一层的功能和逻辑都独立出来,以便于更好的维护管理。