0
点赞
收藏
分享

微信扫一扫

Java Web之 Servlet

ivy吖 2022-04-27 阅读 80
eclipsejava

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


一.servlet 的简介

1.servlet 是什么?

servletjava编写的服务器端的程序,运行在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接收用户发来的请求

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;
}
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注:配置以后记得重启服务器

<web-app>
<servlet>
<!--给它取一个名字-->
<servlet-name> HttpServletTest </servlet-name>
<!--servlet-class需要填上类的全路径 完整的包名+类名 -->
<servlet-class>cn.jbit.servlet. HttpServletTest </servlet-class>
</servlet>

<!--2.配置servlet的访问路径-->
<!--mapping映射-->

<servlet-mapping>
<!--对应的servlet的名字,两个名称必须相同-->
<servlet-name> HttpServletTest </servlet-name>
<!--给它配置一个访问的路径-->
<url-pattern>/HttpServletTest </url-pattern>
</servlet-mapping>
</web-app>

3.运行 Servlet

1)启动Tomcat服务器

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


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

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

举报

相关推荐

0 条评论