资讯专栏INFORMATION COLUMN

[Java Web]Servlet 的学习

dreamGong / 1246人阅读

摘要:的学习的开发是运行在服务器端的程序,用于处理及响应客户端的请求。是个特殊的类,必须继承。另外还包含两个方法创建实例销毁实例不需要为编写构造器,如果需要对进行初始化的操作,可以重写方法。调用的方法销毁。的是应用启动时立刻创建实例。

Servlet 的学习 Servlet的开发

Servlet是运行在服务器端的程序,用于处理及响应客户端的请求。

Servlet是个特殊的Java类,必须继承HttpServlet。每个Servlet可以响应客户端的请求。

Servlet相应客户端请求的方法:

doGet():响应客户端的Get请求

doPost():响应客户端的POST请求

doPut():响应客户端的PUT请求

doDelete():响应客户端的DELETE请求

大部分时候,Servlet对于所有请求的响应都是一样的,所以可以只重写service()方法。

另外HttpServlet还包含两个方法:

init(ServletConfig config):创建Servlet实例

destroy():销毁Servlet实例

不需要为Servlet编写构造器,如果需要对Servlet进行初始化的操作,可以重写init方法。

例子:

//Servlet必须继承HttpServlet类
@WebServlet(name="firstServlet"
    ,urlPatterns={"/firstServlet"})
public class FirstServlet extends HttpServlet
{
    //客户端的响应方法,使用该方法可以响应客户端的所有类型请求
    public void service(HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException,java.io.IOException
    {
        //设置解码方式
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //获取name的请求参数
        String name = request.getParameter("name");
        //获取gender的请求参数
        String gender = request.getParameter("gender");
        //获取color的请求参数
        String[] color = request.getParamterValues("color");
        //获取country的请求参数
        String national = request.getParameter("national");
        //获取页面输出流
        PrintStream out = new PrintStream(response.getOutputStream());
        //输出HTML页面标签
        out.println("");
        out.println("");
        out.println("Servlet测试");
        out.println("");
        out.println("");
        //输出请求参数:name
        out.println("name "+name + "
"); //输出请求参数:gender out.println("gender "+gender + "
"); //输出请求参数:color for(String c:color) { out.println("color " + c +"
"); } //输出请求参数:national out.println("national "+national); out.println(""); out.println(""); } }

Servlet和JSP的区别在于:

Servlet中没有内置对象,原来JSP中的内置对象都必须由程序显式创建

对于静态的HTML标签,Servlet都必须使用页面输出流逐行输出

Servlet的配置

编辑后的Servlet文件要编译成class文件,然后将文件放在WEB-INF/classes中才能够响应用户请求。而且还要将Servlet配置在web应用中(修改web.xml)

配置Servlet的方式有两种(Servlet3.0开始):

在Servlet类中使用@WebServlet注解进行配置

通过在web.xml文件中进行配置

@WebServlet注解最常用的属性

name:指定Servlet的名称

urlPatterns:指定Servlet处理的url

配置Servlet的注意事项:

使用注解来配置Servlet:

1、不要在web.xml文件的根元素中制定metadata-complete="true"
2、不要在web.xml文件中配置该文件

使用web.xml配置Servlet需要配置两个部分:

1、配置Servlet的名字:对应web.xml文件中的元素
2、配置Servlet的URL:对应web.xml文件中的元素

通过配置web.xml文件的例子(通过注解的方式的例子在上面的代码中):



    
    firstServlet
    
    FirstServlet



    
    firstServlet
    
    /firstServlet

JSP/Servlet的生命周期

生命周期:

(1)创建Servlet实例

(2)Web容器调用Servlet的init方法,对Servlet进行初始化

(3)Servlet初始化后,将一直存在于容器中,响应用户请求。

(4)调用Servlet的destroy方法销毁Servlet。

load-on-startup Servlet

load-on-startup Servlet的是Web应用启动时立刻创建Servlet实例。

配置load-on-startup的Servlet的方式有两种:

web.xml文件中通过元素的子元素进行配置

通过@WebServlet注解的loadOnStartup属性指定


(不管通过哪种方式,都之接收一个整型值,数字越小代表优先级越高)

注解配置:

@WebServlet(loadOnStartup=1)
public class TimerServlet extends HttpServlet
{
    public void init(ServletConfig config)throws ServletException
    {
        super.init(config);
        Timer t = new Timer(1000.new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                System.out.println(new Date());
            }
        });
    }
}

web.xml配置:


    
    timerServlet
    
    hsr.TimerServlet
    
    1

访问Servlet的配置参数

为Servlet配置参数的方法:

通过@WebServletinitParam属性指定

web.xml文件的的子元素指定

通过@WebServlet指定:

@WebServlet(name="testServlet",
    urlPatterns={"/testServlet"},
    initParam={
        @WebInitParam(name="Param_name1",value="Param_value1"),
        @WebInitParam(name="Param_name2",value="Param_value2")
    })

通过wel.xml指定:


    param_name
    param_name

访问配置参数:

//获取ServletConfig对象
ServletConfig config = getServletConfig();
//通过ServletConfig对象获取参数
String param = config.getInitParameter("param_name");

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67774.html

相关文章

  • JavaWeb从0开始学(一)-----第一个Web应用程序与JSP工作原理

    摘要:当后继请求相同的页面时,容器加载之前生成的类,并且通知去执行已经存在的字节码,从而省去了转换的过程,这也是第一次执行页面时间较长的原因。 以往学习的时候大多是看完书或者看完视频,动手实践一下就OK了。然而过了一段时间我发现东西都忘差不多了,需要复习才能重新掌握。现在开始学习JavaWeb了,我将在这里记录自己的学习的一点一滴,不仅便于自己以后回顾知识点,也希望能对JavaWeb初学者有...

    CloudDeveloper 评论0 收藏0
  • Servlet学习笔记

    摘要:学习笔记工作以来就一直在用各种框架,比如,这些,向外提供接口都很方便,但是一直在想它的内部是怎样对外暴露服务的,正好之前学习基础的时候也没好好看这块,抽个时间学习总结一下,也能更好的理解掌握现在的框架。 Servlet学习笔记 工作以来就一直在用各种web框架,比如SpringMVC,Spring Cloud这些,向外提供接口都很方便,但是一直在想它的内部是怎样对外暴露服务的,正好之前...

    kohoh_ 评论0 收藏0
  • 慕课网_《Java模板引擎之Freemarker》学习总结

    摘要:时间年月日星期日说明本文部分内容均来自慕课网。整体目录结构如下项目文件用于数据持久化配置项目配置配置视图解析器配置静态资源映射配置配置配置自定义指令配置解析器配置,类似于项目启动类新建,注册配置类,并将其和当前关联。 时间:2017年3月19日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://githu...

    xumenger 评论0 收藏0
  • JAX-RS 2.0 中 REST 四种服务类型

    摘要:当不存在子类,也不存在子类时,规范中定义,在这种情况下,为服务动态生成一个名为的实例,并自动探测匹配资源。其中是中的基类,它继承于情况二当不存在子类,但是存在子类时。以上就是规范中定义的四种服务的方式。 最近在学习 jersey 框架。他是 目前比较流行的 基于 JAX-RS 2.0 规范实现的 RESTful 框架。 我是跟着 《Java RESTful Web Service 实...

    bbbbbb 评论0 收藏0

发表评论

0条评论

dreamGong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<