一. 使用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>
请登录之后再进行评论