栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

cgb2110-day17

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

cgb2110-day17

文章目录
    • 一,Request对象
      • --1,概述
      • --2,测试
    • 二,练习Request解析请求参数
      • --0,项目结构
      • --1,创建HTML网页
      • --2,创建Servlet程序
    • 三,改造Servlet程序实现入库
      • --1,导入jar包
      • --2,修改Servlet程序
      • --3,测试
    • 四,请求转发
      • --1,概述
      • --2,测试
    • 五,Response对象
      • --1,概述
      • --2,测试

一,Request对象 –1,概述

1,用来接受请求,并且能够解析 请求参数.
GET方式: http://localhost:8080/user/userServlet?id=10&name=jack
POST方式: 数据不会在地址栏拼接的
2,常用的有两种:
ServletRequest 父接口
HttpServletRequest 子接口

–2,测试
package cn.tedu.cgb2110boot03.request;

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.Arrays;

@WebServlet
public class RequestServlet01 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);//和doGet干一样的活
    }
    //http://localhost:8080/RequestServlet01?name=jack&pwd=123
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("恭喜您,请求成功~~");
//      Servlet解析请求参数HttpServletRequest
        //1.getParameter()--根据参数名获取参数值
        String s = request.getParameter("name");
        String p = request.getParameter("pwd");
        System.out.println(s+p);
        //2.getParameterValues()--根据参数名获取参数值,可以获取多个值,存入数组
        String[] datas = request.getParameterValues("like");
        System.out.println( Arrays.toString(datas) );//[足球, 篮球]
        //3.HttpServletRequest的其他API
        System.out.println( request.getCharacterEncoding() );//获取请求使用的字符集UTF-8
        System.out.println( request.getMethod() );//获取请求方式GET
        System.out.println( request.getContextPath() );//获取项目名称(被缺省)
        System.out.println( request.getRequestURI() );//要访问的资源路径/RequestServlet01
        System.out.println( request.getRequestURL() );//包含着http://localhost:8080/RequestServlet01
        System.out.println( request.getRemotePort() );//发起请求时的端口号
        System.out.println( request.getQueryString() );//获取请求时携带的参数
    }
}


二,练习Request解析请求参数 –0,项目结构

–1,创建HTML网页


	
		
		测试 Servlet解析请求参数
	
	
		

1.以get方式提交的数据

部门编号:
部门名称:
部门地址:

2.以post方式提交的数据

账号:
密码:
年龄:
–2,创建Servlet程序
package cn.tedu.cgb2110boot03.request;

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("/user/addServlet")
public class RequestServlet02 extends HttpServlet {
    //处理那些post请求
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("恭喜您,成功的提交了用户的数据!");
        //TODO 解析请求参数
        //TODO jdbc入库
    }
    //处理那些get请求
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("恭喜您,成功的提交了部门的数据!");
        //TODO 解析请求参数
        //TODO jdbc入库
    }
}

三,改造Servlet程序实现入库 –1,导入jar包


    4.0.0
    cn.tedu
    cgb2110boot03
    0.0.1-SNAPSHOT
    cgb2110boot03
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.3.7.RELEASE
    

    
        
        
            mysql
            mysql-connector-java
            5.1.48
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.3.7.RELEASE
                
                    cn.tedu.cgb2110boot03.Cgb2110boot03Application
                
                
                    
                        repackage
                        
                            repackage
                        
                    
                
            
        
    



–2,修改Servlet程序
package cn.tedu.cgb2110boot03.request;

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.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

@WebServlet("/user/addServlet")
public class RequestServlet02 extends HttpServlet {
    //处理那些post请求
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("恭喜您,成功的提交了用户的数据!");
        //TODO 解析请求参数
        String user = request.getParameter("user");
        String pwd = request.getParameter("pwd");
        String age = request.getParameter("age");
        System.out.println(user+pwd+age);
        //TODO jdbc入库
        try {
            //1,导入jar包(在pom.xml里添加jar包的坐标依赖)
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            String url="jdbc:mysql:///cgb211001?characterEncoding=utf8";
            Connection c = DriverManager.getConnection(url, "root", "root");
            //获取传输器
            String sql = "insert into user values(null,?,?,?)" ;//sql骨架
            PreparedStatement ps = c.prepareStatement(sql);
            ps.setObject(1,user);
            ps.setObject(2,pwd);
            ps.setObject(3,age);
            //执行SQL
            ps.executeUpdate();//执行增删改的SQL
            //释放资源
            ps.close();
            c.close();
            System.out.println("恭喜您,用户信息已经入库成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //处理那些get请求
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("恭喜您,成功的提交了部门的数据!");
        //TODO 解析请求参数(部门编号,名称,地址)
        String deptno = request.getParameter("deptno");
        String deptname = request.getParameter("deptname");
        String deptloc = request.getParameter("deptloc");
        //TODO jdbc入库
        try {
            //1,导入jar包(在pom.xml里添加jar包的坐标依赖)
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            String url="jdbc:mysql:///cgb211001?characterEncoding=utf8";
            Connection c = DriverManager.getConnection(url, "root", "root");
            //获取传输器
            String sql = "insert into dept values(?,?,?)" ;//sql骨架
            PreparedStatement ps = c.prepareStatement(sql);
            ps.setObject(1,deptno);
            ps.setObject(2,deptname);
            ps.setObject(3,deptloc);
            //执行SQL
            ps.executeUpdate();
            //释放资源
            ps.close();
            c.close();
            System.out.println("恭喜您,部门信息已经入库成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


–3,测试

四,请求转发 –1,概述

是服务器内部的过程,客户端感受不到.
过程: 浏览器 -> A----B
特点: 一次请求一次响应. 地址栏不会改变. 全程使用同一个Request对象.
实现: request.getRequestDispatcher(“B的访问规则”).forward(request,response);

–2,测试

ServletA

package cn.tedu.cgb2110boot03.request;

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("/testa")
public class ServletA extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("ServletA...doGet()被触发!");
        //请求转发: 实现  访问A时,A背后调用B 的效果
        //特点: 地址栏不变   +  同一个request对象(在A里存,在B里取)
        request.setAttribute("name","jack");
        //参数是  目标资源的访问规则.目标资源必须是在同一个项目里才能请求转发
        request.getRequestDispatcher("/testb").forward(request,response);
    }
}

ServletB

package cn.tedu.cgb2110boot03.request;
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("/testb")
public class ServletB extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("ServletB...doGet()被触发!");
        //获取A中存好的数据
        Object o = request.getAttribute("name");
        System.out.println(o);//jack
    }
}

五,Response对象 –1,概述

专门用来给浏览器做出响应.
本质上就是获取一个输出流,利用输出流写出数据
常用对象:
ServletResponse – 父接口
HttpServletResponse – 子接口
常用方法:
1, getWriter() – 获取字符流(只能写出字符数据)
2, getOutputStream() – 获取字节流(写出任意格式的数据)
3, setContentType() – 写出数据中,如果包含中文,解决中文乱码
4, sendRedirect() – 完成重定向

–2,测试
package cn.tedu.cgb2110boot03.response;

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;

//Servlet充当服务器:接受请求Request + 做出响应Response
// http://localhost:8080/resp/servlet01?id=10&name=张三
@WebServlet("/resp/servlet01")
public class ResponseServlet01 extends HttpServlet {
    //如果是get请求,Servlet会自动调用doGet()
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //TODO 解析请求参数
        String id = request.getParameter("id");
        String name = request.getParameter("name");

        //响应时使用的默认的字符集iso-8859-1,为了防止响应时的中文乱码问题,加以下代码
        response.setContentType("text/html;charset=utf8");
        //响应解析到的数据
        PrintWriter out = response.getWriter();
        out.println(id);//提供了一个换行写出的功能
        out.write(name);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号