@[TOC]Httpservlet
数据存储于数据共享
Servlt 可通过ServltContext 对象,上下文对象,存储数据,
提示:以下是本篇文章正文内容,下面案例可供参考
一、编写一个类继承
要让一个普通的java类变成Servlet,最简单的方法就是继承HttpServlet,
二、使用步骤
1.编写代码
代码如下(示例):
import javax.servlet.ServletContext;
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;
/**
* @Author:
* @Date:2021/16/19/15:16
* @Description: Servlet 基本功能,
* 1.通过response 直接先页面输入流或html代码
* 2.数据存储和数据共享,在HelloServlet 中存储数据,在另一个servlet中获取数据,通过上下文对象存储
* 3.使用this 调用父类httpservlet的方法
*/
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通过ServletContext 存储数据
ServletContext context =this.getServletContext();
context.setAttribute("username","输出中文名字");
//通过response 对象存储数据,返回输出html代码
/*
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>MMMMMHello World HELLLLLLLLLL!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>hhhhhHHHHHRRRRRHello Worldsddfssdfsdf! 中午自</h1>");
out.println("</body>");
out.println("</html>");
*/
}
}
2.读入数据
代码如下(示例):
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Author:
* @Date:2021/59/20/9:59
* @Description:获取存储在ServletContext上下文中的数据
*/
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取存储在ServletContext上下文中的数据
ServletContext context = this.getServletContext( );
String username = String.valueOf(context.getAttribute("username"));
System.err.println(username);
}
}
需要注意的是一定要先触发HelloServlet 的doGet()方法,保证username set后,在执行MyServelt中的do Get()方法,才能读取出放入ServletContext中的值,否则值输出为null
3.在web.xml中配置Servlet
<?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"
metadata-complete="true">
<servlet>
<servlet-name>helloword</servlet-name>
<servlet-class>org.lsh.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloword</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Myservlet</servlet-name>
<servlet-class>org.lsh.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Myservlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>
总结
重点:一定要新进行set 然后才能正确的 get 到值
- 创建两个普通的java 类,都继承HttpServlet,
- 一个servlet 中存放数据,在另外一个Servlet中获取数据,都通过ServltContext 对象,获取或设置,可以把ServletContext 当成Servelt的容器
- 在Web.xml 文件 中配置Servlet,