各个部分的作用
jsp部分
form action="..."
:表单标签,供用户提交数据。内部的submit
点击之后相当于是点action
的URL
input type="radio"
:输入类型为单选框。把name设置为一样的,这样效果上就是单选,也可以自己修改,让它实现多选、互斥选等功能。如果三个单选的name都是queryType,我们在servlet中写起来会方便很多,通过request.getParameter(name)
得到用户是选了哪种查询方式。再通过
request.getParameter(request.getParameter(name))
得到用户输入的内容,动态代码。
label
:for谁,点击之后,就相当于是鼠标点谁。for单选框,点完,就会选中。for文本框,点完,光标就会在文本框闪。
input type="text"
:文本框
input type="submit" value="查询"
:提交按钮
Servlet在这里常出的错
pstmt.setString(1,content)
:这会自动给content加上单引号,再加入到pstmt的字符串中。
代码
Jsp
html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>query</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/query">
<input type="radio" id="name" name="queryType" value="name" checked>
<label for="name">按姓名查询</label>
<label for="studentName">学生姓名:</label>
<input type="text" id="studentName" name="name">
<br>
<input type="radio" id="student_id" name="queryType" value="id">
<label for="student_id">按学号查询</label>
<label for="studentId">学生学号:</label>
<input type="text" id="studentId" name="id"><br>
<br>
<input type="radio" id="student_fl" name="queryType" value="fl">
<label for="student_fl">显示有不及格学科的学生信息</label><br>
<input type="submit" value="查询">
<a href="index.jsp">返回主页</a>
</form>
</body>
</html>
Servlet
java
// 获取查询类型
String queryType = request.getParameter("queryType");
//
String content = request.getParameter(queryType);
···
// 查询语句
String sql = "select * from Marks where "+queryType+"=?";
pstmt= conn.prepareStatement(sql);
pstmt.setString(1,content);