博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet
阅读量:6820 次
发布时间:2019-06-26

本文共 5117 字,大约阅读时间需要 17 分钟。

  • servlet

    • servlet是什么 servlet属于javaee规范里面的一个技术. servlet是运行在服务器上的小型java程序,servlet可以用来接收客户端请求并且给客户端一个响应.
    • servlet有什么用 servlet是用来开发动态网页的技术.
    • servlet怎么用 
    • 实现步骤 
      • 创建servlet实例
public class ServletDemo extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        req.setCharacterEncoding("utf-8");        String method = req.getMethod();        System.out.println(method);        String name = req.getParameter("name");        String encode = URLEncoder.encode(name, "iso-8859-1");        System.out.println("+++" + encode);        String decode = URLDecoder.decode(encode, "utf-8");        System.out.println("====" + decode);        String pwd = req.getParameter("pwd");        String sex = req.getParameter("sex");        System.out.println(name + "---" + pwd + "---" + sex);        String[] fruits = req.getParameterValues("fruit");        for (String fruit : fruits) {            System.out.println(fruit);        }        resp.setHeader("content-type", "text/html;charset=utf-8");        resp.getOutputStream().write("登录成功".getBytes("utf-8"));    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

 

      • 在web.xml中配置servlet 原理类似android中清单文件
a
ngyb.ServletDemo
a
/a
        • 配置文件的作用 :通过配置文件来找到我们要访问的servlet
      • servlet运行原理 

         

      • servlet生命周期
        • 生命周期:比如 人 花草树木 
        • 声明周期过程:
          • 当tomcat启动的时候servlet并没有创建 
          • 当访问servlet的时候 tomcat服务器把servlet创建 构造—>init()—->service方法 
          • 当tomcat关闭的时候servlet销毁. 
            • service方法和doget & doPost关系 
            • 根据请求的方式不同,如果请求方式是get请求底层还是调用的doGet方法 如果是post请求底层调用post方法 
      • servletConfig对象
     req.setCharacterEncoding("utf-8");        String method = req.getMethod();        System.out.println(method);        String name = req.getParameter("name");        String encode = URLEncoder.encode(name, "iso-8859-1");        System.out.println("+++" + encode);        String decode = URLDecoder.decode(encode, "utf-8");        System.out.println("====" + decode);        String pwd = req.getParameter("pwd");
      • urlpattern的三种写法
        • 完全路径匹配 /demo 
        • 任意路径匹配 /*
        • 扩展名匹配 .do .action 
          • 在实际开发中使用完全路径匹配. 
      • servletContext对象
        • 这个对象在javaee开发中也理解成是一个工具箱
req.setCharacterEncoding("utf-8");        String method = req.getMethod();        System.out.println(method);        String name = req.getParameter("name");        String encode = URLEncoder.encode(name, "iso-8859-1");        System.out.println("+++" + encode);        String decode = URLDecoder.decode(encode, "utf-8");        System.out.println("====" + decode);        String pwd = req.getParameter("pwd");        String sex = req.getParameter("sex");        System.out.println(name + "---" + pwd + "---" + sex);        String[] fruits = req.getParameterValues("fruit");        for (String fruit : fruits) {            System.out.println(fruit);        }
      • request对象
        • 请求 :请求行 请求头 请求体 所有请求的信息被封装到了request对象
        • 响应 :响应行 响应头 响应体 所有响应的信息被封装到了response对象 
        • 实现代码 
          • html代码
            <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              My JSP 'index.jsp' starting page    
            用户名:
            密码 :
            请选择性别:
            请选择您的水果:
            苹果
            香蕉
            橘子

             

          • servlet代码
req.setCharacterEncoding("utf-8");        String method = req.getMethod();        System.out.println(method);        String name = req.getParameter("name");        String encode = URLEncoder.encode(name, "iso-8859-1");        System.out.println("+++" + encode);        String decode = URLDecoder.decode(encode, "utf-8");        System.out.println("====" + decode);        String pwd = req.getParameter("pwd");        String sex = req.getParameter("sex");        System.out.println(name + "---" + pwd + "---" + sex);        String[] fruits = req.getParameterValues("fruit");        for (String fruit : fruits) {            System.out.println(fruit);        }
          • 乱码问题 
            •  post方式解决乱码
req.setCharacterEncoding("utf-8");

 

            • get方式提交数据乱码 
              • 由于get提交数据是以组拼url地址的形式提交 “张三”& 要对特殊符号& 和中文进行url编码 

 ​

String name = req.getParameter("name");        String encode = URLEncoder.encode(name, "iso-8859-1");        System.out.println("+++" + encode);        String decode = URLDecoder.decode(encode, "utf-8");        System.out.println("====" + decode);

 

      • response
resp.setHeader("content-type", "text/html;charset=utf-8");        resp.getOutputStream().write("登录成功".getBytes("utf-8"));

 

转载于:https://www.cnblogs.com/nangongyibin/p/10223677.html

你可能感兴趣的文章
Mongodb 分片 手动维护chunk
查看>>
【C#|.NET】lock(this)其实是个坑
查看>>
我的友情链接
查看>>
最大连续和 Medium
查看>>
1030.在线视频—开源网管Cacti系列讲座(五)Cacti插件架构与插件安装
查看>>
Linux中exec命令相关
查看>>
asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
查看>>
Redis主从配置
查看>>
全面掌握ping命令(四)ping命令常用参数
查看>>
【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。...
查看>>
mysql用户管理、常用sql语句、mysql数据库备份恢复
查看>>
五大常用算法
查看>>
说说这些年做的云计算和大数据项目
查看>>
java基础第十二天_集合
查看>>
最新一代企业管理软件功能介绍
查看>>
12 种编程语言的起源故事
查看>>
Linux crond 定时任务
查看>>
linux 文件删除详解
查看>>
linux下虚拟终端terminator安装和使用
查看>>
Java多线程学习(六)Lock锁的使用
查看>>