tomcat与sql的连接:在浏览器的jsp页面输入 学号、姓名 查询数据库,出现字母符号等乱码。请问各位英杰,这个怎么解决呀?

问题遇到的现象和发生背景

通过tomcat服务器,在浏览器360极速浏览器上输入 学号、姓名,查询数据库某表中的学生的相关信息。

问题相关代码,请勿粘贴截图

三个jsp文件,两个tag文件:
首页:

<%@ page contentType="text/html;charset=gb2312"%>
<html><body>

<form action="byName.jsp" method="post">
<h2>根据学号查询</h2>
<input type=text name="number">输入学号:
<input type=submit name="g" value="提交">
</form>

<form action="byName.jsp" method="post">
<h2>根据姓名查询</h2>
<input type=text name="name">输入姓名:
<input type=submit name="g" value="提交">
</form>
</body></html>


这是二选一,输入学号和姓名会跳转到不同的页面。
byName.jsp

<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="look"%>
<html><body color=cyan><font size=2>
<% String name=request.getParameter("name");%>
<look:NameCondition name="<%=name%>"/>
</font></body></html>

byNumber.jsp

<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="look"%>
<html><body color=cyan><font size=2>
<% String number=request.getParameter("number");%>
<look:NumberCondition number="<%=number%>"/>
</font></body></html>

NameCondition.tag

<%@ tag pageEncoding="utf-8" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="number" required="true"%>
<HTML><BODY>
  <% Connection con;
      Statement sql; 
      ResultSet rs;
      try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); }
      catch(Exception e) { out.print(e); }
      try {  String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Student";
           String user="sa";
           String password="";
           con=DriverManager.getConnection(uri,user,password);
           sql=con.createStatement();
           rs=sql.executeQuery("SELECT * FROM message WHERE number="+number");
if(rs.next()){
           out.print("<table border=2>");
           out.print("<tr>");
           out.print("<th width=100>"+"number");
           out.print("<th width=100>"+"name");
           out.print("<th width=50>"+"birthday");
           out.print("<th width=50>"+"email");
           out.print("</TR>");
              out.print("<tr>");
              out.print("<td >"+rs.getString(1)+"</td>"); 
              out.print("<td >"+rs.getString(2)+"</td>");
              out.print("<td >"+rs.getString(3)+"</td>"); 
              out.print("<td >"+rs.getString(4)+"</td>");
              out.print("</tr>") ; 
           out.print("</table>");
}
else{
              out.print("<h1>您输入的学号错误,没有此人。</h1>") ; 
}
           con.close();
}      
      catch(SQLException e1) { out.print(e1); }
  %>
</BODY></HTML>

NameCondition.tag

<%@ tag pageEncoding="utf-8" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="name" required="true"%>
<HTML><BODY>
  <% Connection con;
      Statement sql; 
      ResultSet rs;
      try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); }
      catch(Exception e) { out.print(e); }
      try {  String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Student";
           String user="sa";
           String password="";
           con=DriverManager.getConnection(uri,user,password);
           sql=con.createStatement();
           rs=sql.executeQuery("SELECT * FROM message WHERE name="+name);
if(rs.next()){
           out.print("<table border=2>");
           out.print("<tr>");
           out.print("<th width=100>"+"number");
           out.print("<th width=100>"+"name");
           out.print("<th width=50>"+"birthday");
           out.print("<th width=50>"+"email");
           out.print("</TR>");
              out.print("<tr>");
              out.print("<td >"+rs.getString(1)+"</td>"); 
              out.print("<td >"+rs.getString(2)+"</td>");
              out.print("<td >"+rs.getString(3)+"</td>"); 
              out.print("<td >"+rs.getString(4)+"</td>");
              out.print("</tr>") ; 
           out.print("</table>");
}
else{
              out.print("<h1>您输入的学号错误,没有此人。</h1>") ; 
}
           con.close();
}      
      catch(SQLException e1) { out.print(e1); }
  %>
</BODY></HTML>


运行结果及报错内容

输入学号的结果:
17个�,还有其他几个字母。

我的解答思路和尝试过的方法

jdk是1.8,tomcat是5.66,sql是2012版本的。

我想要达到的结果

通过在浏览器输入的学号或者姓名,能正确访问获取到数据库的信息并显示在浏览器上。

另一个是在jsp页面进行注册,并把注册信息存在数据库里,而且成功提交过后在页面显示“注册成功”,这个是可以运行的。

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。