A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陆建平 中级黑马   /  2012-6-2 12:53  /  1714 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在常常很多地方用java servlet,servlet到底怎么用,在那些地方用

5 个回复

倒序浏览
本帖最后由 刘伯阳 于 2012-6-2 13:39 编辑

Servlet就是服务器端小程序,它是用java语言编写的服务器端的程序,他就类似于JSP,能够生成动态的Web页。
它运行在服务器端并由服务器端调度执行,是按照Servlet标准开发的类。
Servlet程序是对CGI程序的实现,但是我们知道CGI是多进程的。但是Servlet是多线程处理方式,所以它效率要高一些。Servlet可以处理客户端传来的HTTP请求(最大优点)
之后它会向客户端返回一个响应。具体的处理流程我就不说了你可以去百度一下。
Servlet可以用在MVC(Model-View-Controller)设计模式中,它担任的是Controller的作用。
最常用的——Servlet处理表单的提交(POST)。具体的举一个小例子吧:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SomeServlet extends HttpServlet {

public void doGet( HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

// 用 "request" 读取http信息头(如cookie)
// 和HTML表单数据 (如用户输入和提交的数据)
String firstName = request.getParameter(“firstname”);
String lastName = request.getParameter(“lasttname”);

// 用"response"指定http响应 和http信息头
// (如指明信息的类型、设定cookie).
response.setContentType(“text/html”);

PrintWriter out = response.getWriter();
// 用 "out"输出内容到浏览器
} }

回复 使用道具 举报
Servlet是在服务端运行的java程序。创建Servle时要是创建的类继承HttpServlet类,然后覆盖doGet和doPost方法中的一个或者全部。该方法用来处理客户端的请求,然后再将请求结果通过PrintWriter返回客户浏览器。简单的servlet就是这样处理的。
回复 使用道具 举报
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机
回复 使用道具 举报
JavaTM servlets是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理能力。
Servlet与applets不同的地方是,它不运行在Web浏览器或其他图形化的用户界面上。Servlet通过servlet引擎运行在Web服务器中,以执行请求和响应,请求、响应的典型范例是HTTP协议。
一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。这个请求被运行在Web服务器上的Servlet引擎处理,并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。
在功能上,Servlet与CGI、NSAPI有点类似,但是,与他们不同的是:Servlet具有平台无关性。

Servlet的生命周期
一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。
所有的Java Servlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行。Servlet引擎是Web 服务器按照Java Servlet API定制的扩展。Servlet引擎提供网络服务,能够理解MIME请求,并提供一个运行Servlet的容器。
javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。

Servlet的初始化
Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。
在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。
init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。

通过类名调用Servlet
例如,如果Servlet引擎接收了来自/servlet/com.foo.servlet.MailServlet的请求,Servlet引擎会载入这个com.foo.servlet.MailServlet类,建立实例,并通过这个Servlet来处理请求。

Servlet环境
ServletContext接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境中,但是不同的Servlet可以在Servlet引擎上有不同的视图。
如果Servlet引擎支持虚拟主机,每个虚拟主机有一个Servlet环境。一个Servlet环境不能在虚拟主机之间共享。

回复 使用道具 举报
servlet其实就是一个java类,简单地说:servlet就是能够使用print语句产生动态html内容的java类
它是在服务器上的可以通过“请求-响应”模式来访问的应用程序。
servlet的主要功能包括以下几点:
a.读取客户端发送到服务器端的显示数据(表单数据),
b.读取客户端发送到服务器端的隐式数据(请求报头),
c.服务器端发送显示的数据到客户端(html)
d.服务器端发送隐式的数据到客户端(状态代码和响应报头)
总的来说就是客户端与服务器端的显示、隐式数据交换
读取客户端html表单的数据、读取cookie session数据
我个人认为servlet最卓越的功能是他的过滤器作用——典型的应用是进行身份验证
比如访问一个网站的时候,登录后就拥有一些特殊的权限(发表留言、评论、转载灯功能),而作为匿名游客则只可以访问 浏览允许的页面。
一个简单的代码例子
userFilter.java
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.*;

import javax.servlet.http.*;


public class UserFilter extends HttpServlet implements Filter {
        private FilterConfig filterConfig;
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                        FilterChain filter) throws IOException, ServletException {
                HttpSession session=((HttpServletRequest)request).getSession();
                response.setCharacterEncoding("utf-8");
                if(session.getAttribute("name") != null)
                {
                        filter.doFilter(request, response);
                }
                else
                {
                        PrintWriter out=response.getWriter();
                        out.println("<script language='javascript'>alert('you don not have the power,please login!');" +
                                        "window.location.href='index.jsp'</script>");
                }
        }
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
                this.filterConfig=filterConfig;
        }

}
web.xml配置

<filter>
        <filter-name>UserFilter</filter-name>
        <filter-class>com.util.UserFilter</filter-class>
</filter>
<filter-mapping>
<filter-mapping>
        <filter-name>UserFilter</filter-name>
        <url-pattern>/sendArticle.jsp</url-pattern>阻止匿名游客进入的页面
        <url-pattern>/update.jsp</url-pattern>
        <url-pattern>/delete.jsp</url-pattern>
</filter-mapping>
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马