• 中文
    • English
  • 注册
  • 查看作者
  • 8:获取参数值

    一.  使用URL传参数

    传参可以直接在链接的后面添加以下内容即可

    URL?参数名=参数值&参数名2=参数值2...

    例一:传入username和password两个参数,两个参数的值分别是zhangjia和123

    <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <a href="result.jsp?username=zhangjia&password=123">Result</a>
    </body>
    </html>

    值得注意的是,使用URL进行传参尽量不要传递中文数据,如果要传递中文,则必须使用utf-8进行编码。

    package io.zhangjia.test.Book;
    
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    public class Main {
        public static void main(String[] args) {
            String str = "张甲";
            try {
                //使用UTF-8编码
                String encode = URLEncoder.encode(str,"utf-8");
                System.out.println("encode = " + encode);
    //            encode = %E5%BC%A0%E7%94%B2
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            
            str = "%E5%BC%A0%E7%94%B2";
    
            try {
                //使用UTF-8解码
                String decode = URLDecoder.decode(str, "utf-8");
                System.out.println("decode = " + decode);
    //            decode = 张甲
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
    
    
        }
    }

    二.  获取请求参数

    我们可以使用request的getParameter方法,传入要获取的参数名,来返回一个String类的请求参数的值。使用前需要先添加相关依赖,添加依赖的教程可以查看本站《IDEA添加依赖》一文。

    获取单个值:request.getParameter(“参数名”);  返回的是一个字符串

    获取多个值:request.getParameterValues(“参数名”);  返回的是一个字符串数组

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <h2><%= request.getParameter("username")%></h2>  <!-- zhangjia -->
    <h2><%= request.getParameter("password")%></h2>   <!-- 123 -->
    </body>
    </html>

    上面获取的参数值可以通过例一的代码来传入,也可以直接修改result的请求网址来传入:

    http://localhost:8888/jia/result.jsp?username=zhangjia&password=123

    如果我们不传入任何方式,直接访问http://localhost:8888/jia/result.jsp,那么该页面会显示两个NULL,也就是说,如果没有传入这个参数,那么获取的时候显示null,如果有这个参数,没设置值,那么获取的时候显示的是空字符串。

    三.  小练习

    点击表格中的雇员的姓名,跳转到对应的雇员信息页面

    index.jsp

    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.DriverManager" %>
    <%@ page import="java.sql.PreparedStatement" %>
    <%@ page import="java.sql.ResultSet" %>
    <%@ page language="java" contentType="text/html; charset=utf-8"
             pageEncoding="utf-8"%>
    <link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <style type="text/css">
        table {
          width: 40%;
          border: 1px #000 solid;
          border-spacing: 0; /*设置相邻单元格的边框间的距离为0*/
          border-collapse: collapse; /*合并边框*/
        }
    
        td, th {
          border: 1px #000 solid;
        }
      </style>
      <title>Insert title here</title>
    </head>
    <body>
    <%
      String DRIVER = "oracle.jdbc.OracleDriver";
      String URL = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
      String USER = "SCOTT";
      String PASSWORD = "TIGER";
      Class.forName(DRIVER);
      Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
      String sql = "SELECT * FROM emp";
      PreparedStatement pstm = connection.prepareStatement(sql);
      ResultSet rs = pstm.executeQuery();
    %>
    
    <table class="table">
    
      <tr>
        <th>EMPNO</th>
        <th>ENAME</th>
        <th>JOB</th>
        <th>MGR</th>
        <th>HIREdATE</th>
        <th>SAL</th>
        <th>COMM</th>
        <th>DEPTNO</th>
      </tr>
    
      <%
        while(rs.next()) {
      %>
    
      <tr>
        <td><%= rs.getObject(1) %></td>
        <td><a href="02-显示雇员信息.jsp?empno=<%= rs.getObject(1) %>"><%= rs.getObject(2) %></a></td>
        <td><%= rs.getObject(3) %></td>
        <td><%= rs.getObject(4) %></td>
        <td><%= rs.getObject(5) %></td>
        <td><%= rs.getObject(6) %></td>
        <td><%= rs.getObject(7) %></td>
        <td><%= rs.getObject(8) %></td>
    
      </tr>
    
      <%
        }
      %>
    </table>
    
    <%
      rs.close();
      pstm.close();
      connection.close();
    %>
    </body>
    </html>

    雇员信息.jsp

    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.DriverManager" %>
    <%@ page import="java.sql.PreparedStatement" %>
    <%@ page import="java.sql.ResultSet" %>
    <%@ page import="java.util.Map" %>
    <%@ page import="java.util.HashMap" %>
    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
    <!DOCTYPE html>
    <html>
    <head>
        <%
            String DRIVER = "oracle.jdbc.OracleDriver";
            String URL = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
            String USER = "SCOTT";
            String PASSWORD = "TIGER";
            Class.forName(DRIVER);
            Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
            String sql = "SELECT * FROM emp WHERE empno =?";
            PreparedStatement pstm = connection.prepareStatement(sql);
            pstm.setObject(1,request.getParameter("empno"));
            ResultSet rs = pstm.executeQuery();
            Map<String,Object> map = new HashMap<>();
    
            if(rs.next()) {
                map.put("EMPNO",rs.getObject(1));
                map.put("ENAME",rs.getObject(2));
                map.put("JOB",rs.getObject(3));
                map.put("MGR",rs.getObject(4));
                map.put("HIREdATE",rs.getObject(5));
                map.put("SAL",rs.getObject(6));
                map.put("COMM",rs.getObject(7));
                map.put("DEPTNO",rs.getObject(8));
            }
            rs.close();
            pstm.close();
            connection.close();
    
        %>
        <title><%=map.get("ENAME") %></title>
    </head>
    <body>
    <h1></h1>
    </body>
    </body>
    <p>雇员编号:<%=map.get("EMPNO") %></p>
    <p>职位:<%=map.get("JOB") %></p>
    <p>入职日期:<%=map.get("HIREdATE") %></p>
    <p>工资:<%=map.get("SAL") %></p>
    <p>奖金:<%=map.get("COMM") %></p>
    <p>部门编号:<%=map.get("DEPTNO") %></p>
    
    </html>

    山东省·济南市
  • 0
  • 0
  • 0
  • 1.7k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: