栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Serlvet笔记一

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Serlvet笔记一

IDEA-配置Serlvet(基于tomcat服务器)

HelloServelt

测试小程序

package com.lz.xxx;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class Hello extends HttpServlet {
	// get请求对应的方法
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("this is get method..");
        PrintWriter out = resp.getWriter();
        out.println("get method is running...");
    }
	// post请求对应的方法
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("this is post method..");
        PrintWriter out = resp.getWriter();
        out.println("post method is running...");
    }
}

web.xml文件配置



    
        hello
        
        com.lz.xxx.Hello
    
    
    
        hello
        /hello
        /myhello
        /abc/*
    

访问 localhost:8080/hello 响应如下:

ServletConfig和ServletContext

ServletConfig接口的对象只能访问对应的Servlet中配置的参数

Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,通过调用 init(ServletConfig config) 方法将Servlet对象传递给Servlet。

在web.xml中的servlet元素里面配置 子元素
此处配置的参数将被加载进该Servlet对应的ServletConfig对象中


   xx
    com.xx
    
        addName 
        Rose 
    

ServletConfig接口的常用方法

方法说明功能描述
String getInitParameter(String name)根据初始化参数名返回对应的初始化参数值
Enumeration getInitParameterNames()返回一个 Enumeration 对象,其中包含了所有的初始化参数名
ServletContext getSerlvetContext()返回一个代表当前Web应用的ServletContext对象
String getServletName()返回Servlet的名字,即 web.xml中 元素的值

使用测试

// 省略导入的包
public class TestServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();

        ServletConfig config = this.getServletConfig();
        Enumeration configname = config.getInitParameterNames();

        while (configname.hasMoreElements()){
            String name = configname.nextElement();
            String value = config.getInitParameter(name);
            out.println(name + " = " + value);
        }
    }
}

ServletContext对象在当前这个Web应用中是唯一的,代表当前Web应用,该对象不仅封装了当前Web应用的所有信息,还可以配置整个Web应用的初始化信息。

注意:当前Web应用中的所有Servlet中都可以访问到

配置方法如下:


    name 
    Harry 


    school
    lzjiaotong

使用测试

// 省略导入的包
public class TestServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        
        ServletContext context = this.getServletContext();
        Enumeration names = context.getInitParameterNames();

        while (names.hasMoreElements()){
            String name = names.nextElement();
            String value = context.getInitParameter(name);
            out.println(name + "--->" + value);
        }
    }
}

ServletContext接口的方法

方法说明功能描述
Enumeration getAttributeNames()返回一个 Enumeration 对象,该对象包含了所有存放在ServletContext中的所有域属性名
Object getAttribute(String name)根据参数指定的属性名返回一个与之匹配的域属性值
void removeAttribute(String name)根据参数指定的域属性名,从ServletContext中删除匹配的域属性
void setAttribute(String name, Object obj)设置ServletContext的域属性,其中name是域属性名,obj是域属性值

应用:

setattr.java

// 导入包省略
public class setattr extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        ServletContext context = this.getServletContext();
        context.setAttribute("data", "I love you");
    }
}

readattr.java

public class readattr extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        ServletContext context = this.getServletContext();

        String value = (String)context.getAttribute("data");

        PrintWriter out = resp.getWriter();

        out.println("data" + " ==> " + value);
    }
}

web.xml



    
        setattr
        com.lz.setattr
    
    
        setattr
        /set
    

    
        readattr
        com.lz.readattr
    
    
        readattr
        /read
    




读取Web应用下的资源文件

在ServletContext接口中定义了一些读取 Web 资源的方法,这些方法是依靠 Servlet容器来实现的。Servlet容器根据资源文件相对于Web 应用的路径,返回关联资源文件的 IO流、资源文件在文件系统的绝对路径等。

ServletContext接口的常用方法

方法说明功能描述
Set getResourcePaths(String path)返回一个Set集合,集合中包含了资源目录中子目录和文件的路径名称。参数path必须以正斜线(/)开始,指定匹配资源的部分路径
String getRealPath(String path)返回资源文件在服务器文件系统上的真实路径(绝对路径)。参数path代表资源文件的虚拟路径,它应该以正斜线(/)开始,“/” 表示当前Web应用的根目录,如果Servlet容器不能将虚拟路径装换为文件系统的真实路径,则返回null
URL getResource(String path)返回映射到某个资源文件的URL对象。参数path必须以正斜线(/)开始,“/” 代表当前Web应用的根目录
InputStream getResourceAsStream(String path)返回映射到某个资源文件的InputStream输入流对象。参数则和getResource() 方法完全一致

src 下的 jiaotong.properties 文件

name=whb
class=ruanjian

使用测试

// 省略导入的包
public class TestServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");

        PrintWriter out = resp.getWriter();
        ServletContext context = this.getServletContext();
		// 获取文件对应的流对象
        InputStream resource = context.getResourceAsStream("./WEB-INF/classes/jiaotong.properties");
        // 创建 Properties 对象
        Properties props = new Properties();
		// 将资源文件内容加载进 Properties 对象中
        props.load(resource);
        // 通过 Properties 对象获取文件中保存的键值对信息
        String name = props.getProperty("name");
        String cls = props.getProperty("class");
		// 输出到浏览器
        out.println("name = " + name);
        out.println("class = " + cls);

    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号