• 中文
    • 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.4k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: