//查询页面,jsp。放在一个文件夹里。路径没出错//这是我编写的ChengjiServlet2类
<body>
<form id="form1" name="chengjiFrom" method="post" action="../ChengjiServlet2"><h1 align="center">成绩查询页面</h1>
<p>姓名:
<input name="sname" type="text" id="sname" />
</p>
<p>学号:
<input name="sno" type="text" id="sno" />
</p>
<p>
<input type="submit" name="Submit" value="查询成绩" />
</p>
</form>
</body>
[code=java]
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List chengji = new ArrayList();
//获取chengjichaxun.jsp页面的各个控件属性
String Sname = request.getParameter("sname");
String Sno = request.getParameter("sno");
String SelectScore = request.getParameter("select");
ChengjiSQLUtil chengjiSql = new ChengjiSQLUtil();
Connection conn =null;
Statement stmt=null;
ResultSet rs = null;
conn = chengjiSql.getConn_Bendi();
try
{
if(SelectScore.equals("score_1"))
{
//创建Statement实例,并执行sql语句
String sql = "SELECT * FROM 'renwu'.'score_da1' where sno='"+Sno+"' and sname='"+Sname+"'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
String sno = rs.getString("sno");
String sname = rs.getString("sname");
String ke1_a = rs.getString("ke1_a");
String ke1_b = rs.getString("ke1_b");
String ke1_c = rs.getString("ke1_c");
String ke1_d = rs.getString("ke1_d");
String ke1_e = rs.getString("ke1_e");
String ke1_f = rs.getString("ke1_f");
chengji.add(sno);
chengji.add(sname);
chengji.add(ke1_a);
chengji.add(ke1_b);
chengji.add(ke1_c);
chengji.add(ke1_d);
chengji.add(ke1_e);
chengji.add(ke1_f);
}
HttpSession session = request.getSession();
session.setAttribute("score", chengji);
response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");
}
else if(SelectScore.equals("score_2"))
{
String sql = "SELECT * FROM 'renwu'.'score_da2' where sno='"+Sno+"' and sname='"+Sname+"'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
String sno = rs.getString("sno");
String sname = rs.getString("sname");
String ke2_a = rs.getString("ke2_a");
String ke2_b = rs.getString("ke2_b");
String ke2_c = rs.getString("ke2_c");
String ke2_d = rs.getString("ke2_d");
String ke2_e = rs.getString("ke2_e");
String ke2_f = rs.getString("ke2_f");
chengji.add(sno);
chengji.add(sname);
chengji.add(ke2_a);
chengji.add(ke2_b);
chengji.add(ke2_c);
chengji.add(ke2_d);
chengji.add(ke2_e);
chengji.add(ke2_f);
}
HttpSession session = request.getSession();
session.setAttribute("score", chengji);
response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");
}
else if(SelectScore.equals("score_3"))
{
String sql = "SELECT * FROM 'renwu'.'score_da3' where sno='"+Sno+"' and sname='"+Sname+"'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
String sno = rs.getString("sno");
String sname = rs.getString("sname");
String ke3_a = rs.getString("ke3_a");
String ke3_b = rs.getString("ke3_b");
String ke3_c = rs.getString("ke3_c");
String ke3_d = rs.getString("ke3_d");
String ke3_e = rs.getString("ke3_e");
String ke3_f = rs.getString("ke3_f");
chengji.add(sno);
chengji.add(sname);
chengji.add(ke3_a);
chengji.add(ke3_b);
chengji.add(ke3_c);
chengji.add(ke3_d);
chengji.add(ke3_e);
chengji.add(ke3_f);
}
HttpSession session = request.getSession();
session.setAttribute("score", chengji);
response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");
}
else if(SelectScore.equals("score_4"))
{
String sql = "SELECT * FROM 'renwu'.'score_da4' where sno='"+Sno+"' and sname='"+Sname+"'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
String sno = rs.getString("sno");
String sname = rs.getString("sname");
String ke4_a = rs.getString("ke4_a");
String ke4_b = rs.getString("ke4_b");
String ke4_c = rs.getString("ke4_c");
String ke4_d = rs.getString("ke4_d");
String ke4_e = rs.getString("ke4_e");
String ke4_f = rs.getString("ke4_f");
chengji.add(sno);
chengji.add(sname);
chengji.add(ke4_a);
chengji.add(ke4_b);
chengji.add(ke4_c);
chengji.add(ke4_d);
chengji.add(ke4_e);
chengji.add(ke4_f);
}
HttpSession session = request.getSession();
session.setAttribute("score", chengji);
response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");
}
}catch(Exception e)
{
e.printStackTrace();
}finally
{
chengjiSql.releaseResources(conn, stmt, rs);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
[/code]
//这块是web.xml的相关信息
<servlet>
<servlet-name>chengjiServlet2</servlet-name>
<servlet-class>org.afan.course.servlet.ChengjiServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>chengjiServlet2</servlet-name>
<url-pattern>/chengjiServlet2</url-pattern>
</servlet-mapping>
//这块是查询成功后要跳转的页面代码,目前还没能走到这个页面。
<body><P>成绩情况</P>
<table>
<%
List list = (List)session.getAttribute("score");
for(int i=0;i<list.size();i++)
{
out.print("成绩:" + list.get(i) + "<br/>");
}
%>
</table>
</body>
20 个解决方案
#1
你写的可真复杂 先问一嘴 servlet中service方法你没动吧?是不在那放着没动?
#2
这个是Tomcat反馈的部分信息
at org.afan.course.servlet.ChengjiServlet2.doPost(ChengjiServlet2.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.afan.course.servlet.ChengjiServlet2.doPost(ChengjiServlet2.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
#3
没有,只重写了doGet方法和doPost
#4
1.你那个doPost写的有意义么?就是跳转到doget 干嘛不直接在doPost里写呢?多余!
2.根据你的说法首先 你的跳转应该是实现的有问题;
这样解决 把你跳转写到方法的最后 也就是所有情况都跳转 别把跳转写在各个if中,然后把上面的方法注释掉 只留下跳转方法(response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");)
这是为了测试你的跳转成没成功
3 在servlet中用system。out输出一下你的查询结果 看看你的查询方法写没写对
2.根据你的说法首先 你的跳转应该是实现的有问题;
这样解决 把你跳转写到方法的最后 也就是所有情况都跳转 别把跳转写在各个if中,然后把上面的方法注释掉 只留下跳转方法(response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");)
这是为了测试你的跳转成没成功
3 在servlet中用system。out输出一下你的查询结果 看看你的查询方法写没写对
#5
可能Servlet代码有些长,其实意思是第一个jsp页面有一个下拉框,根据不同的下拉框,执行不同的sql语句,连接相应的数据表,总共有4个——大一成绩表、大二成绩表、大三成绩表、大四成绩表。对应4个if语句。出问题的貌似在while(rs.next())这里
#6
别弄混淆了 你不同方法跳转的都是同一个页面 所以这个跳转和你的业务逻辑没关系 先把跳转写明白 不用管你的逻辑ok?
把你的response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");写到if else 之外去对你的业务逻辑的实现一点也不影响
你看看你的路径对不对
把你的response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");写到if else 之外去对你的业务逻辑的实现一点也不影响
你看看你的路径对不对
#7
还有servlet中service方法负责调用doget或者dopost方法 你页面from中method用get的话servlet自己调用doget
用的post的话 servlet自己调用dopost 你写复杂了
用的post的话 servlet自己调用dopost 你写复杂了
#8
第一步改了,放在了doPost()里了;
第二步试了,response.sendRedirect("./chaxun_chengji/chengji_jieguo.jsp");成功了;
第三步这样子写了
String Sname = request.getParameter("sname");
String Sno = request.getParameter("sno");
String SelectScore = request.getParameter("select");
ChengjiSQLUtil chengjiSql = new ChengjiSQLUtil();
Connection conn =null;
Statement stmt=null;
ResultSet rs = null;
conn = chengjiSql.getConn_Bendi();
try
{
//创建Statement实例,并执行sql语句
String sql = "SELECT * FROM 'renwu'.'score_da1' where sno='"+Sno+"' and sname='"+Sname+"'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
String sno = rs.getString("sno");
String sname = rs.getString("sname");
String ke1_a = rs.getString("ke1_a");
String ke1_b = rs.getString("ke1_b");
String ke1_c = rs.getString("ke1_c");
String ke1_d = rs.getString("ke1_d");
String ke1_e = rs.getString("ke1_e");
String ke1_f = rs.getString("ke1_f");
System.out.print(sno);
System.out.print(sname);
System.out.print(ke1_a);
System.out.print(ke1_b);
System.out.print(ke1_c);
System.out.print(ke1_d);
System.out.print(ke1_e);
System.out.print(ke1_f);
}
}catch(Exception e)
{
e.printStackTrace();
}
把response.sendRedirect("./chaxun_chengji/chengji_jieguo.jsp");去掉了,但是没看出啥效果,没有报错,也没有结果。。不知道是不是语句的问题
#9
sql的表名用单引号干嘛?
#10
把sql改成静态的测试一下 先别用参数查询
#11
你是哪个学校的 老师会被你气死的 java惯例变量名小写开头 驼峰命名 快把sno什么的改成小写
#12
表的单引号是抄书上的,去掉了。用静态的成功了!!而且加上where也可以!!
#13
睡了 有问题明天再说吧 这个地方好好学 这是框架的基础 学好了功德无量
#14
现在又冒出了一个问题,我估计是最后一个吧——jsp页面的sname文本框和sno文本框的内容传递到Servlet类中,String xuesheng=request.getParamter("sname")和String xuehao=request.getParamter("sno")好像没能获取文本框的值。执行查询后在新页面没有输出数据表的内容。
#15
师傅,现在有个小问题:我从jsp页面的文本框sname和文本框sno里输入了两个值“张三”和“1111”,然后进入Servlet后,执行查询跳转新页面后,新页面 除了默认的标签什么也没有了。我猜是Servlet里的getParameter没有获取到jsp页面传来的sname和sno参数。不知是不是,也烦请师傅帮忙看下哈!
#16
学校还是比培训机构落后太多了啊!
现在还没开始教学生使用标签库吗?
每次查询都建立链接,你以为web开发是写main函数吗?
找些培训机构的视频看看吧,有好处的。
现在还没开始教学生使用标签库吗?
每次查询都建立链接,你以为web开发是写main函数吗?
找些培训机构的视频看看吧,有好处的。
#17
我不知你有没学框架,如果没有的话,赶紧学吧,不然以后就别找相关工作了。
#18
我估计不是没有获取到值,可能是获取到的内容乱码了,然后查询不出东西。
先输出一下你获取的值,如果是乱码的话,设置下编码:request.setCharacterEncoding("utf-8");
先输出一下你获取的值,如果是乱码的话,设置下编码:request.setCharacterEncoding("utf-8");
#19
我知道我在java上很菜,但是我可以熬通宵去做代码。经过不懈的努力,我终于实现了自己需要的功能,在此感谢昨晚深夜陪伴我解决问题的师傅cmchina7。他不仅教会了我怎样解决问题,更教会了我怎样分块一块一块测试找到问题,在此对他表示深深的感谢,感谢你深夜仍旧对我的帮助,非常感谢。同时也感谢w405112941给我提出了一个实质性的解决方法,谢谢!!我接着去完成我的“菜鸟设计”了,各位,先说再见了!
#20
今天来晚了 不知道你的问题解决了没 不过没解决的话也没事 因为我没看到效果不知道你问题出在了哪 呵呵
给你说个知识点吧 楼上这个代码很好啊 这个代码的作用是 容器在将参数传给servlet的时候 默认按照iso8859的编码解析 你要讲这句代码放到你方法的最前面 最好放在service方法的第一行 然后再写别的东西
将来要是遇见编码是乱码时 记得以下三个地方
1.初始页面要有编码设置 html写<html charset=“utf-8”>(好像是在html标签上写 你可以随便看一个网页的源码 看看写在哪个标签了 我这pad查找不方便)j
2.jsp的话要有<%@page pageEncoding=“utf-8”%>
3.就是楼上说的那段代码放在servlet的service上
另外我们习惯把servlet的其他方法都不用 直接在service写业务 不用什么doget什么的
#21
#1
你写的可真复杂 先问一嘴 servlet中service方法你没动吧?是不在那放着没动?
#2
这个是Tomcat反馈的部分信息
at org.afan.course.servlet.ChengjiServlet2.doPost(ChengjiServlet2.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.afan.course.servlet.ChengjiServlet2.doPost(ChengjiServlet2.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
#3
没有,只重写了doGet方法和doPost
#4
1.你那个doPost写的有意义么?就是跳转到doget 干嘛不直接在doPost里写呢?多余!
2.根据你的说法首先 你的跳转应该是实现的有问题;
这样解决 把你跳转写到方法的最后 也就是所有情况都跳转 别把跳转写在各个if中,然后把上面的方法注释掉 只留下跳转方法(response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");)
这是为了测试你的跳转成没成功
3 在servlet中用system。out输出一下你的查询结果 看看你的查询方法写没写对
2.根据你的说法首先 你的跳转应该是实现的有问题;
这样解决 把你跳转写到方法的最后 也就是所有情况都跳转 别把跳转写在各个if中,然后把上面的方法注释掉 只留下跳转方法(response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");)
这是为了测试你的跳转成没成功
3 在servlet中用system。out输出一下你的查询结果 看看你的查询方法写没写对
#5
可能Servlet代码有些长,其实意思是第一个jsp页面有一个下拉框,根据不同的下拉框,执行不同的sql语句,连接相应的数据表,总共有4个——大一成绩表、大二成绩表、大三成绩表、大四成绩表。对应4个if语句。出问题的貌似在while(rs.next())这里
#6
别弄混淆了 你不同方法跳转的都是同一个页面 所以这个跳转和你的业务逻辑没关系 先把跳转写明白 不用管你的逻辑ok?
把你的response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");写到if else 之外去对你的业务逻辑的实现一点也不影响
你看看你的路径对不对
把你的response.sendRedirect("chaxun_chengji/chengji_jieguo.jsp");写到if else 之外去对你的业务逻辑的实现一点也不影响
你看看你的路径对不对
#7
还有servlet中service方法负责调用doget或者dopost方法 你页面from中method用get的话servlet自己调用doget
用的post的话 servlet自己调用dopost 你写复杂了
用的post的话 servlet自己调用dopost 你写复杂了
#8
第一步改了,放在了doPost()里了;
第二步试了,response.sendRedirect("./chaxun_chengji/chengji_jieguo.jsp");成功了;
第三步这样子写了
String Sname = request.getParameter("sname");
String Sno = request.getParameter("sno");
String SelectScore = request.getParameter("select");
ChengjiSQLUtil chengjiSql = new ChengjiSQLUtil();
Connection conn =null;
Statement stmt=null;
ResultSet rs = null;
conn = chengjiSql.getConn_Bendi();
try
{
//创建Statement实例,并执行sql语句
String sql = "SELECT * FROM 'renwu'.'score_da1' where sno='"+Sno+"' and sname='"+Sname+"'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
String sno = rs.getString("sno");
String sname = rs.getString("sname");
String ke1_a = rs.getString("ke1_a");
String ke1_b = rs.getString("ke1_b");
String ke1_c = rs.getString("ke1_c");
String ke1_d = rs.getString("ke1_d");
String ke1_e = rs.getString("ke1_e");
String ke1_f = rs.getString("ke1_f");
System.out.print(sno);
System.out.print(sname);
System.out.print(ke1_a);
System.out.print(ke1_b);
System.out.print(ke1_c);
System.out.print(ke1_d);
System.out.print(ke1_e);
System.out.print(ke1_f);
}
}catch(Exception e)
{
e.printStackTrace();
}
把response.sendRedirect("./chaxun_chengji/chengji_jieguo.jsp");去掉了,但是没看出啥效果,没有报错,也没有结果。。不知道是不是语句的问题
#9
sql的表名用单引号干嘛?
#10
把sql改成静态的测试一下 先别用参数查询
#11
你是哪个学校的 老师会被你气死的 java惯例变量名小写开头 驼峰命名 快把sno什么的改成小写
#12
表的单引号是抄书上的,去掉了。用静态的成功了!!而且加上where也可以!!
#13
睡了 有问题明天再说吧 这个地方好好学 这是框架的基础 学好了功德无量
#14
现在又冒出了一个问题,我估计是最后一个吧——jsp页面的sname文本框和sno文本框的内容传递到Servlet类中,String xuesheng=request.getParamter("sname")和String xuehao=request.getParamter("sno")好像没能获取文本框的值。执行查询后在新页面没有输出数据表的内容。
#15
师傅,现在有个小问题:我从jsp页面的文本框sname和文本框sno里输入了两个值“张三”和“1111”,然后进入Servlet后,执行查询跳转新页面后,新页面 除了默认的标签什么也没有了。我猜是Servlet里的getParameter没有获取到jsp页面传来的sname和sno参数。不知是不是,也烦请师傅帮忙看下哈!
#16
学校还是比培训机构落后太多了啊!
现在还没开始教学生使用标签库吗?
每次查询都建立链接,你以为web开发是写main函数吗?
找些培训机构的视频看看吧,有好处的。
现在还没开始教学生使用标签库吗?
每次查询都建立链接,你以为web开发是写main函数吗?
找些培训机构的视频看看吧,有好处的。
#17
我不知你有没学框架,如果没有的话,赶紧学吧,不然以后就别找相关工作了。
#18
我估计不是没有获取到值,可能是获取到的内容乱码了,然后查询不出东西。
先输出一下你获取的值,如果是乱码的话,设置下编码:request.setCharacterEncoding("utf-8");
先输出一下你获取的值,如果是乱码的话,设置下编码:request.setCharacterEncoding("utf-8");
#19
我知道我在java上很菜,但是我可以熬通宵去做代码。经过不懈的努力,我终于实现了自己需要的功能,在此感谢昨晚深夜陪伴我解决问题的师傅cmchina7。他不仅教会了我怎样解决问题,更教会了我怎样分块一块一块测试找到问题,在此对他表示深深的感谢,感谢你深夜仍旧对我的帮助,非常感谢。同时也感谢w405112941给我提出了一个实质性的解决方法,谢谢!!我接着去完成我的“菜鸟设计”了,各位,先说再见了!
#20
今天来晚了 不知道你的问题解决了没 不过没解决的话也没事 因为我没看到效果不知道你问题出在了哪 呵呵
给你说个知识点吧 楼上这个代码很好啊 这个代码的作用是 容器在将参数传给servlet的时候 默认按照iso8859的编码解析 你要讲这句代码放到你方法的最前面 最好放在service方法的第一行 然后再写别的东西
将来要是遇见编码是乱码时 记得以下三个地方
1.初始页面要有编码设置 html写<html charset=“utf-8”>(好像是在html标签上写 你可以随便看一个网页的源码 看看写在哪个标签了 我这pad查找不方便)j
2.jsp的话要有<%@page pageEncoding=“utf-8”%>
3.就是楼上说的那段代码放在servlet的service上
另外我们习惯把servlet的其他方法都不用 直接在service写业务 不用什么doget什么的