serlet

1.为什么需要servlet技术

  1. 比如需求,我们希望用户可以发帖,用户可以还可以回复...这样一些用户交互功能,用普通的javaJ技术就完成不了,sun就可以开发了servlet技术供程序员使用。

2. 什么是servlet?

Servlet是Server和applet(小程序)的结合写法,意思是服务器小程序用于扩展web服务软件业务功能的组件,每一种请求都需要对应一个单独的Servlet(对应WebServer的业务)

  • Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。I

  • Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口

  • Servlet想要运行,必须依靠一个Web服务器软件,也称Web容器(Tomcat)

3.Servlet生命周期

  1. 执行Servlet构造方法

  2. 执行init()初始化方法

    第一、二步是在第一次访问的时候创建Servlet程序调用

  3. 执行service()方法

    第三步,每次访问的时候都会调用

  4. 执行destroy销毁方法

    第四步在web工程停止的时候访问。

package cpm.jack.jk.controller;

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

public class Akl implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("出生");
    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("生命");
    }

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

    @Override
    public void destroy() {
        System.out.println("死亡");
    }
}

 可见在生命周期里只在第一次访问创建一次,关闭浏览器窗口才结束生命周期.

4.ServletContent对象

1.概念

代表整个web应用,可以和程序的容器(服务器)来通讯
 

2.获取方式

request.getServletContext();

this.getServletContext();

3.有获取访问流量的作用

package cpm.jack.jk.controller;

import javax.print.attribute.HashAttributeSet;
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.net.HttpURLConnection;

public class Fji extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        ServletContext context = getServletContext();

        Object count = context.getAttribute("count");
        if (count==null){
            context.setAttribute("count",1);
        }else {
          int  value= (Integer)count;
            context.setAttribute("count",value+1);
        }
       
System.out.println(context.getAttribute("count")+"次数");
    }
}

 5.HTTP

 请求格式
   1.GET
   请求行 
   - 请求的方式      GET 
   - 请求的资源路径[+?+请求参数] 
   - 请求的协议的版本号 HTTP/1.1 
   请求头 
   - key : value 组成 不同的键值对,表示不同的含义

(get方式没有请求体,在URL以字符串形式传达)比如下图


   2.POST
    请求行 
   - 请求的方式      GET 
   - 请求的资源路径[+?+请求参数] 
   - 请求的协议的版本号 HTTP/1.1 
    请求头 
   - key : value 组成 不同的键值对,表示不同的含义。
    请求体
   - key+ value 组成不同的键值对

 


请求头:
   Accept:告诉服务器,客户端支持的数据类型。
   Accept-Language: 告诉服务器,客户端支持的请求的语言类型。
   User-Agent:浏览器信息
   Accept-Encoding:告诉服务器,客户端支持的数据编码(压缩)格式类型
   Host:请求地址
   Connection:告诉服务器,请求如何处理。
   Content-Length: 告诉服务器,请求内容长度
   Content-Type: 告诉服务器,提交的内容类型
 

该图片是火狐浏览器里 显示

6.request对象

HttpServletRequest对象的 getParameter(String name) 方法用于获取客户端请求中指定名称的参数值。

在 HTTP 请求中,参数通常通过查询字符串(GET 请求)或请求体(POST 请求)传递。getParameter() 方法可以从这些地方提取参数值,并返回一个字符串。

下面是一个示例,展示了如何使用 getParameter() 方法获取请求参数:

package cpm.jack.jk.controller;

import javax.print.attribute.HashAttributeSet;
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.net.HttpURLConnection;

public class Fji extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Object username = req.getParameter("username");
        Object password = req.getParameter("password");
        System.out.println(username);
        System.out.println(password);


    }
}

 我们发现username出现乱码,解决方式

 1.POST
 request.setCharacterEncoding("UTF-8");
 2.GET
 String username =  request.getParameter("username");  //GBK
 username = new String(username.getBytes("GBK"),"UTF-8")

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值