好好学习,天天向上hhxcttxs 2021-11-26 17:59 采纳率: 0%
浏览 31
已结题

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版本的。

我想要达到的结果

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

  • 写回答

2条回答 默认 最新

  • 关注

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

    评论

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 创建了问题 11月26日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)