Servlet01

Servlet

  • Servlet(Server Applet)是Java Servlet的简称,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
  • Servlet本质是一个实现了Servlet接口的实现类

Servlet的结构体系

在这里插入图片描述

新建第一个Servlet

  • 自定义一个类 继承自HttpServelt
  • 覆盖业务方法中具体的某个(doGet()/doPost() 分别代表了get提交/post提交(常用的))
  • 需要在web工程核心配置文件–web.xml 去配置这个servlet

在这里插入图片描述

  • 地址栏输入访问地址:
    http://localhost:8080/项目名称/url-pattern名称
    注意,如果不行的话,可能是没有设置上下文路径,及输入http://localhost:8080/url-pattern名称 即可

示例

public class MyFirstServlet extends HttpServlet {
	
	
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) 
			throws ServletException, IOException {
		
		//向浏览器响应内容
		//设置响应浏览器时候的中文乱码问题
		response.setContentType("text/html;charset=utf-8");
		//response.getWriter().write("hello,this is myFirst Servlet!");
		response.getWriter().write("hello,我来了Servlet!");
		/**
		 * 本地工作环境:GBK格式---->将内容输出浏览器总(UTF-8:一个中文对应3个字节)
		 * 
		 */
		
	}
}

结果
在这里插入图片描述

Servlet的生命周期

  • 对象的创建(单例):默认LifeServlet类对象的创建–是在访问的时候创建这个对象—服务器完成的!
  • init(ServletConfig config):初始化 只初始化一次
  • service(HttpServletRequest request,HttpServletResponse resposne) :服务方法
  • destroy():销毁 服务器关闭的,servlet销毁了!
    正常关闭 (在本地启动的:shutdown.bat eclipse工具中:点击tomcat服务器启动的红色运行组状态)

Servlet的执行流程

  1. 用户输入请求地址 :http://localhost:8080/web application/url-pattern
  2. tomcat服务器就会解析用户请求的地址
    2.1解析url-pattern地址—在整个web.xml 是否存在这个路径
    2.2进入servlet基本配置(servlet-name–先找到这个名字,servlet-class 当前servlet的全限定名称 包名.类名)
    2.3通过全限定名称:反射的方式创建该类的实例, 通过获取当前Servlet中doXXX()所在Method
    2.4Method m = 字节码文件对象.getDeclaredMethod(“doGet”,HttpServletRequest.class,HttpServletResponse.class) ;
    2.5m.inovke(实例,request,response) ;
  3. 将信息进行展示–向浏览器输出内容----

Servlet获取前端页面的数据

例如,登录是获取前端输入的用户名和密码

//如何获取前台页面中的参数数据
		//表单中必须指定name属性----属性值="xxx"
		//public String getParameter(String name) 通用方法
		request.setCharacterEncoding("utf-8"); //解决post提交中文乱码
		//String getParameter(String name):获取单个参数信息
		// //用户名
		String username = request.getParameter("username") ;
		//密码
		String password = request.getParameter("password") ;
		//输出
		System.out.println(username+"----"+password);
		
		//通过用户名和密码查询用户----判断用户是存在!

前端界面
在这里插入图片描述

ServletContext的作用

获取上下文路径

		//public ServletContext getServletContext() :获取全局对象
		ServletContext context = this.getServletContext() ;
		String path = context.getContextPath() ;

作为域对象去使用
给当前域对象中设置属性以及绑定的属性值

		ServletContext servletContext = this.getServletContext() ;
		//public void setAttribute(String name, Object object):
		//给当前域对象中设置属性以及绑定的属性值
		servletContext.setAttribute("name", "张三");
		System.out.println("数据已经存储到域对象中了!");

从ServletContext域对象中获取数据
在这里插入图片描述

//获取全局对象
	ServletContext context = this.getServletContext() ;
	//public Object getAttribute(String name)
	//通过域对象中设置的属性名称获取绑定的内容
	String s = (String) context.getAttribute("name") ;
	System.out.println("内容是:"+s);

	System.out.println("获取数据成功!");

在这里插入图片描述

请求转发

在这里插入图片描述

//获取servletContext对象
		/*ServletContext servletContext = this.getServletContext() ;
//		public RequestDispatcher getRequestDispatcher(String path)
		//获取请求转发(分发)对象
		RequestDispatcher rd = servletContext.getRequestDispatcher("/adv.html") ;
		//public RequestDispatcher getRequestDispatcher(String path)
		//从后台servlet将请求转发到工程资源路径下
		rd.forward(request, response);
		
		System.out.println("请求转发成功");*/
		
		//简写方式
		//request---->域对象  HttpServletRequest
		request.setAttribute("name","lisi");
		request.getRequestDispatcher("/hello.jsp").forward(request, response);

四个域对象

  • PageContext----page域-----在当前jsp页面中有效
  • HttpServletRequest----request域-----在一次请求中有效(请求转发的时候会携带数据)
  • HttpSession----session域-----在一次会话(用户(客户端:浏览器)–服务器端)中有效
  • ServletContext----全局对象-----整个web工程 (web application)

Servlet获取相关的Servlet的配置信息(了解)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取ServletConfig
		//HttpServlet的父类--->getServletConfig()---->ServletConfig
		ServletConfig servletConfig = this.getServletConfig() ;
		//配置对象---servlet配置信息
		//获取servlet名称
		String name = servletConfig.getServletName() ;
		System.out.println(name);
		//获取全局对象: ServletContext:
		ServletContext context = servletConfig.getServletContext() ;
		String path = context.getContextPath() ;//获取web工程的上下文路径
		System.out.println(path);
		
		//获取servlet中的配置参数
		//init-param
		String value = servletConfig.getInitParameter("path") ;
		System.out.println(value);
		//..IO流读写操作:value---->D//a.txt 内容复制到当前项目下 
		
		
	}

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值