0
点赞
收藏
分享

微信扫一扫

Serlvet笔记一(Servlet基础)

本栏博客目录

Serlvet笔记一(Servlet基础)
​​​Servlet笔记二(请求和响应)​​​​Servlet笔记三(会话及其会话技术)​​​​Servlet笔记四(JSP技术)​​​​Servlet笔记五(EL表达式和JSTL)​​​​Servlet笔记六(Servlet 高级)​​​​Servlet笔记七(JDBC)​​​​Servlet笔记八(数据库连接池与DBUtils工具)​​​​Servlet笔记九(JSP 开发模型)​​​​Servlet笔记十(文件上传和下载)​​

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


文章目录

  • ​​HelloServelt​​
  • ​​ServletConfig和ServletContext​​
  • ​​读取Web应用下的资源文件​​

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文件配置​

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>hello</servlet-name>
<!--此处应该对应上面的Servlet-->
<servlet-class>com.lz.xxx.Hello</servlet-class>
</servlet>
<!--多重映射-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
<url-pattern>/myhello</url-pattern>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping>
</web-app>

访问 localhost:8080/hello 响应如下:
Serlvet笔记一(Servlet基础)_资源文件

ServletConfig和ServletContext

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

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

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

<servlet>
<servlet-name>xx</servlet-name>
<servlet-class>com.xx</servlet-class>
<init-param>
<param-name>addName</param-name> <!-- 键 -->
<param-value>Rose</param-value> <!-- 值 -->
</init-param>
</servlet>

ServletConfig接口的常用方法

方法说明

功能描述

String getInitParameter(String name)

根据初始化参数名返回对应的初始化参数值

Enumeration getInitParameterNames()

返回一个 Enumeration 对象,其中包含了所有的初始化参数名

ServletContext getSerlvetContext()

返回一个代表当前Web应用的ServletContext对象

String getServletName()

返回Servlet的名字,即 web.xml中<servlet-name> 元素的值

使用测试

// 省略导入的包
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<String> 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中都可以访问到​

配置方法如下:

<context-param>
<param-name>name</param-name> <!-- 键 -->
<param-value>Harry</param-value> <!-- 值 -->
</context-param>
<context-param>
<param-name>school</param-name>
<param-value>lzjiaotong</param-value>
</context-param>

使用测试

// 省略导入的包
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<String> 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​

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>setattr</servlet-name>
<servlet-class>com.lz.setattr</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>setattr</servlet-name>
<url-pattern>/set</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>readattr</servlet-name>
<servlet-class>com.lz.readattr</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>readattr</servlet-name>
<url-pattern>/read</url-pattern>
</servlet-mapping>
</web-app>

Serlvet笔记一(Servlet基础)_xml_02
Serlvet笔记一(Servlet基础)_servlet_03
Serlvet笔记一(Servlet基础)_servlet_04

读取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() 方法完全一致

Serlvet笔记一(Servlet基础)_xml_05

​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);

}
}

​show​

Serlvet笔记一(Servlet基础)_xml_06


举报

相关推荐

0 条评论