Java Web 之 Servlet

Java Web 之 Servlet,第1张

前言:从EL表达式到JSTL标签,减少了login.jsp和index.jsp页面中的java代码,而今天的学习是让jsp中彻底没有java代码,原本写在doLogin.jsp做登录判断的java代码,我们不写在jsp文件中,而是将java代码写在java文件中 -- servlet


一.servlet 的简介 1.servlet 是什么?

servlet是java编写的服务器端的程序,运行在web服务器中。

2.servlet 的生命周期。
实例化Servlet 容器创建 Servlet 的实例
初始化该容器调用 init() 方法
请求处理如果请求 Servlet,则容器调用 service() 方法
服务终止  销毁实例之前调用 destroy() 方法

3.servlet 生命周期的相关方法。
public class HelloServlet implements Servlet {
           prvate  ServletConfig config;
           Public void destory();
           public ServletConfig getServletConfig(){
                 return config;
           }
           public void init(ServletConfig config)throws ServletException{
                  this.config=config;
	    System.out.println("初始化!");	
           }
           Public void service(ServletRequest req,ServletResponse res)
	throws ServletException,IOException{
	    PrintWriter out = res.getWrite();
	    out.println("Hello world");
	    out.close();
           }
           public void destroy() {
	super.destroy();
	System.out.println("释放资源!");	}
}

 二.Servlet 相关接口 1.ServeltConfig 接口(在Servlet初始化过程中获取配置信息,一个Servlet只有一个ServletConfig对象

方法名称

         功能描述

String getInitParameter(String name)

获取web.xml中设置的以name命名的初始化参数值

ServletContext getServletContext()

返回Servlet的上下文对象引用

2.ServeltConText 接口(获取Servlet上下文

方法名称

         功能描述

ServletContext getContext(String path)

返回服务器上与指定URL相对应的

ServletContext对象

void setAttribute(String name,Object obj)

设置Servlet中的共享属性

Object getAttribute(String name)

获取Servlet中设置的共享属性

2. GenericServlet 抽象类(提供了Servlet与ServletConfig接口的默认实现方法

方法名称

         功能描述

String getInitParameter(String name)

返回服务器上与指定URL相对应的ServletContext对象,

实际上是调用ServletConfig接口的同名方法

ServletContext getServletContext()

返回Servlet的上下文对象引用,实际上是调用

ServletConfig接口的同名方法

void init()

初始化Servlet

 三.HttpServlet 类 1. HttpServlet 继承于 GenericServlet处理HTTP协议的请求和响应

方法名称

         功能描述

void doGet(HttpServletRequest request,HttpServletRresponse response)

以Get请求服务时调用

void doPost(HttpServletRequest request,HttpServletRresponse response)

以Post请求服务时调用

2.使用doXxx() 接收用户请求

1) doGet():用户使用get方式提交请求时调用

2) doPost():用户使用post方式提交请求是调用

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
     public void doGet(HttpServletRequest request, HttpServletResponse 
                                     response)  throws ServletException, IOException {
	//doGet方法体内容
     }	
     public void doPost(HttpServletRequest request, HttpServletResponse  
                                      response)  throws ServletException, IOException {
	//doPost方法体内容
     }

 四. servlet的作用 1.接收用户端发来的请求 2.调用其他java程序来处理请求 3.将处理结果,返回到服务器

五.使用servlet接收用户发来的请求

首先我们不在需要doLogin.jsp文件,在java文件下方创建一个包名为com.xxx.servlet,该下方的类为LoginServlet。

1.实现servlet接口(我们需要把servlet中的方法重写,会得到五个方法)

1)init() 方法

init() 方法被设计成只调用一次(初始化:当请求第一次进入servlet就会调用该方法。)

  @Override
public void init(ServletConfig arg0) throws ServletException {
	//第一次进来:当请求第一次进入servlet就会调用该方法
	System.out.println("我初始化啦");
}

2)service() 方法

service() 方法是执行实际任务的主要方法(代码都是写在该方法中


  @Override
	public void service(ServletRequest req, ServletResponse res)
 throws ServletException, IOException {
		
	}

3)destroy() 方法

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。

  @Override
	public void destroy() {
		//销毁的情况分为:1.服务器关闭
	    //           2.这个类被修改啦
	  System.out.println("我销毁啦");
		
	}

4)得到配置

  
  @Override
	public ServletConfig getServletConfig() {
		return null;
	}

5)得到信息

 @Override
	public String getServletInfo() {
			return null;
	}
 

实现servlet的运用:该代码是替代了原本的login.jsp文件,在该类中和doLogin.jsp的接收用户发来的请求一样,代码如下.

package com.yjx.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.net.http.HttpRequest;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class LoginServlet implements Servlet{
	
	//第一步实现servlet接口
	/**
	 * 初始化
	 */
  @Override
public void init(ServletConfig arg0) throws ServletException {
	//第一次进来:当请求第一次进入servlet就会调用该方法
	System.out.println("我初始化啦");
}
   
  /**
   * 服务
   */
  @Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		//代码都是写在该方法中
	   //ServletRequest:其实就是request 请求
	   //ServletResponse:就是response 响应
	   
	   //强转响应和请求,为响应和请求的子类
	  HttpServletRequest request=(HttpServletRequest)req;
	  HttpServletResponse response=(HttpServletResponse)res;
	  
	  req.setCharacterEncoding("utf-8");//防止乱码的代码
	  //先获取到传过来的数据
	  String name=req.getParameter("username");
	  String pwd=req.getParameter("pwd");
	 
	  //将数据打印在页面上,在原先jsp文件中我们直接out.print
	  //但是在该java文件中我们需要通过响应对象获取了输出对象
	   PrintWriter out=response.getWriter();
	  //out设置的变量名,可以随意设置,但是我们经常都是用out.print所有将变量名设置为out更好
	  
	     
	  //当获取到数据后,判断该用户是否登录成功
	  if("zking".equals(name)&&"zking123".equals("pwd")) {
		 out.print("登录成功");
		  
	  }else {
		  out.print("登录失败");
	  }
	}
  
     //以上步骤过后,我们需要进行配置,不然登录请求发送时不知道进入那个java文件中,所以我们要配置servlet的访问路径
     //配置路径去到web.xml文件中配置
  
  /**
   * 销毁
   */
  @Override
	public void destroy() {
		//销毁的情况分为:1.服务器关闭
	    //           2.这个类被修改啦
	  System.out.println("我销毁啦");	
	}

  /**
   * 得到配置
   */
  @Override
	public ServletConfig getServletConfig() {
		return null;
	}

  /**
   * 得到信息
   */
  @Override
	public String getServletInfo() {
		
		return null;
	}
}

六.Servlet 的部署与配置 1.Servlet 的部署

 2.Servlet 的配置

 在web.xml文件中配置Servlet(注:配置以后记得重启服务器


    
                
         HttpServletTest 
                
        cn.jbit.servlet. HttpServletTest 
    


    

    
            
         HttpServletTest 
            
        /HttpServletTest 
    

3.运行 Servlet

1)启动Tomcat服务器

2)在浏览器中输入:http://localhost:8080/store/HttpServletTest


沾不到氢氧化钠,描不透锰硅铝钾。

我为你相思牵挂,后来你无穷变化,我黯然神伤该如何应答。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/756120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存