IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> servlet的使用 -> 正文阅读

[Java知识库]servlet的使用

servlet的基本使用

package com.xxx.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//@WebServlet("/ser01")
//@WebServlet(name="Servlet01",value="/ser01")
//@WebServlet(name="Servlet01",value={"/ser01","/ser001"})
@WebServlet(name="Servlet01",urlPatterns={"/s01","/s001"})//这里设置地址的
public class servlet01 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello servlet");
        String URL = req.getRequestURL()+"";//stringbuff转为string直接再后面加""
        System.out.println("获取请求的完整路径:"+URL);

        String uri = req.getRequestURI();
        System.out.println("获取请求的部分路径:"+uri);

        String queryString = req.getQueryString();
        System.out.println("获取请求时的参数字符串:"+queryString);

        String method = req.getMethod();
        System.out.println("获取请求的方法:"+method);

        String prototol = req.getProtocol();
        System.out.println("获取请求的协议版本:"+prototol);

        String webapp = req.getContextPath();
        System.out.println("获取项目的站点名:"+webapp);

        /*获取请求的参数*/
        //获取指定名称的参数值
        String uname = req.getParameter("uname");
        String upwd = req.getParameter("upwd");
        System.out.println("uname:"+uname);
        System.out.println("upwd:"+upwd);

        //获取指定名称的参数的所有参数值,返回字符串数组(用于复选框)
        String[] hobbys = req.getParameterValues("hobby");
        if(hobbys!=null&&hobbys.length>0){
            for(String hobby:hobbys){
                System.out.println("爱好:"+hobby);
            }
        }
    };
}

servlet请求转发

package com.xxx.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//请求转发
@WebServlet("/s02")
public class servlet02 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*获取请求的参数*/
        //获取指定名称的参数值
        String uname = req.getParameter("uname");
        System.out.println("servlet02 uname:"+uname);
        //请求转发到servlet03
        //可以传客户端传过来的参数
        req.getRequestDispatcher("s03").forward(req,resp);//也可以请求转发到jsp和html
//        req.getRequestDispatcher("login.html").forward(req,resp);//也可以请求转发到jsp和html
    };
}

/s03

package com.xxx.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/s03")
public class servlet03 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*获取请求的参数*/
        //获取指定名称的参数值
        //可以获取/s02转发过来的参数uname
        String uname = req.getParameter("uname");
        System.out.println("servlet03 uname:"+uname);
    };
}

servlet转发自定参数

package com.xxx.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//传值到不同servlet中
@WebServlet("/s04")
public class servlet04 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servlet04");
        //可以传自定义的参数,用setAttribute
        req.setAttribute("name","admin");
        req.setAttribute("age",18);
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        req.setAttribute("list",list);

        //请求转发到servlet05
        //地址不改变
        //参数可共享
        req.getRequestDispatcher("s05").forward(req,resp);
    };
}

/s05

package com.xxx.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//传值到不同servlet中
@WebServlet("/s05")
public class servlet05 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servlet05");
        //获取域对象内容
        String name = (String) req.getAttribute("name");
        System.out.println("name:"+name);

        Integer age = (Integer) req.getAttribute("age");
        System.out.println("age:"+age);

        List<String> list = (List<String>) req.getAttribute("list");
        System.out.println("list:"+list.get(0));
    };
}

servlet设置服务端和客户端编码

package com.xxx.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet("/s06")
public class servlet06 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置服务端的编码
//        resp.setCharacterEncoding("UTF-8");
        //设置客户端的响应类型和编码
//        resp.setHeader("content-type","text/html'charset=UTF-8");

        //同时设置客户端和服务端的编码格式
        resp.setContentType("text/html;charset=UTF-8");

        //设置字符流
        PrintWriter writer = resp.getWriter();
        writer.write("<h2>你好</h2>");

        //字节流
//        ServletOutputStream out = resp.getOutputStream();
//        out.write("hi".getBytes());
    };
}

servlet重定向

package com.xxx.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
//重定向
@WebServlet("/s07")
public class servlet07 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servlet07");
        //重定向跳转到s08
        //地址会发生改变,变成s08的地址
        //数据无法共享,request,response不共享
        resp.sendRedirect("s08");
    };
}

servlet+filter+jdbc做一个简单的后端接口

设置一个公共可用的jdbc接口

package com.xxx.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class jdbc {
    private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;
    static {
        try{
            driver = "com.mysql.cj.jdbc.Driver";
            url = "jdbc:mysql://localhost:3306/chinaschool?serverTimezone=UTC";
            username = "root";
            password = "123456";

            //驱动只加载一次
            Class.forName(driver);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //获取链接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }
    //释放链接资源
    public static void release(Connection c, Statement s, ResultSet r) throws SQLException {
        if(r!=null){
            r.close();
        }
        if(s!=null){
            s.close();
        }
        if(c!=null){
            c.close();
        }
    }
}

filter

package com.xxx.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter("/test02")//设置拦截的接口
//@WebFilter("/*")//拦截所有资源
public class Filter02 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("Filter01 init...");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("doFilter");
        HttpServletResponse resp = (HttpServletResponse) servletResponse;
        //解决跨域请求问题
        resp.setHeader("Access-Control-Allow-Origin", "*");
        filterChain.doFilter(servletRequest,resp);
        //
    }
    @Override
    public void destroy() {

    }




}

servlet

package com.xxx.test;

import com.xxx.utils.jdbc;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

//servlet导入的驱动放在web/web-inf/lib下
@WebServlet("/test02")
public class test02 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("application/json");
        resp.setCharacterEncoding("utf-8");
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        try {
            conn = jdbc.getConnection();
            System.out.println(conn);
            String sql = "select sub.subject,sub.station_name from subjects as sub where sub.subject = ?";
            st = conn.prepareStatement(sql);
            st.setString(1,"化学");
            rs = st.executeQuery();
            JSONArray result = resultToJsonArray(rs);
            PrintWriter out = resp.getWriter();
            out.println(result);

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                jdbc.release(conn,st,rs);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static JSONArray resultToJsonArray(ResultSet rs) throws SQLException {
        JSONArray array = new JSONArray();
        ResultSetMetaData metaData = rs.getMetaData();
        int column = metaData.getColumnCount();
        while (rs.next()){
            JSONObject jsonObj = new JSONObject();
            for(int i = 1;i<=column;i++){
                String columnName = metaData.getColumnLabel(i);
                String value = rs.getString(columnName);
                jsonObj.put(columnName,value);
            }
            array.put(jsonObj);
        }
        return array;
    }
}

注意!servlet导入的jar包放在web/web-inf/lib下,并且不要用任何文件夹包含
jar包存放如下
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:43:18  更:2021-10-07 13:45:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:21:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码