我有一个索引。带有“刷新”、“转发”和“编辑”按钮的jsp页面。如果我单击刷新按钮,它将调用一个Servlet,并在索引上显示值。jsp页面。
当我点击“forward”按钮时,它调用另一个servlet并转到另一个页面forward\u call\u log。jsp。在这个页面中,当我点击“转发”按钮时,它调用另一个servlet,该servlet显示索引。jsp页面。索引。显示jsp页面,但数据库中的值不可用。
我怎样才能解决这个问题?
指数jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pager Example - www.javaworkspace.com</title>
</head>
<body>
<form method="post" action="./Problem_retrive" >
<input type="submit" value="Refresh">
</form>
<form action="./edit_call_log" method="post">
<%
ResultSet rs=null;
try
{
rs=(ResultSet)request.getAttribute("rs");
//request.setAttribute("rs",rs);
if(rs.next())
{
%>
<table border=1 cellspacing=1 cellpadding=1>
<tr>
<th>check box</th>
<th>Problem ID</th>
<th>user ID</th>
</tr>
<%
do
{
%>
<tr>
<td><input type="checkbox" name="checkbox" value="<%=rs.getString(1) %>"></td>
<td><%=rs.getString(1) %></td>
<td><%=rs.getString(2) %></td>
</tr>
<%
}
while(rs.next());
%>
</table>
<%
}
else
{
out.println("hiiiiiiii");
}
}
catch(Exception e)
{
e.printStackTrace();
}
%>
<input type="submit" name="act" value="EditCall"/>
<input type="submit" name="act" value="Forward"/>
</form>
</body>
</html>
单击刷新按钮后,调用编辑调用servlet。JAVA
import database.problemdesc.Problem_retrive_class;
import database.user_master.User_master;
import java.sql.*;
public class Edit_call extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
HttpSession session = request.getSession(true);
ResultSet rs=null;
Problem_retrive_class prc=new Problem_retrive_class();
int checkbox=Integer.parseInt(request.getParameter("checkbox"));
session.setAttribute("problem_id", checkbox);
String act=request.getParameter("act");
if(act.equals("EditCall"))
{
try
{
rs=prc.select_table(checkbox);
RequestDispatcher rd = request.getRequestDispatcher("edit_call_log.jsp");
request.setAttribute("rs", rs);
rd.forward(request, response);
}
catch(Exception e)
{
e.printStackTrace();
}
}
else if(act.equals("Forward"))
{
System.out.println("Forward page");
try
{
ResultSet rs1=null;
User_master um=new User_master();
rs=prc.select_table(checkbox);
if(rs.next())
{
System.out.println("Value retrieve from PRC select_table");
rs1=um.select_table(rs.getString(7));
System.out.println("Value retrieve from PRC select_table"+rs.getString(7));
RequestDispatcher rd = request.getRequestDispatcher("forward_call_log.jsp");
request.setAttribute("rs1", rs1);
request.setAttribute("user_type", rs.getString(7));
rd.forward(request, response);
}
else
{
RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
rd.forward(request, response);
}
}
catch(Exception e)
{
}
}
}
}
单击“前进”按钮后,调用“问题检索”servlet。JAVA
import database.problemdesc.Problem_retrive_class;
public class Problem_retrive extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
Connection con=null;
ResultSet rs=null;
try
{
Problem_retrive_class prc=new Problem_retrive_class();
DBBean db=new DBBean();
con=db.getDBConnection();
rs=prc.select_table();
RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
rd.forward(request, response);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
看起来您没有将任何数据附加到请求对象,因此index.jsp没有任何要显示的内容。我假设这是问题发生时正在执行的代码。
public class Edit_call extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
...
else if(act.equals("Forward"))
{
try
{
...
{
...
}
else
{
RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
/ *** YOUR PROBLEM IS HERE ***/
rd.forward(request, response);
}
[编辑]
根据您的问题,我假设JSP上的“刷新”按钮按预期工作(即,数据库中的数据按预期显示)。从下面的JSP代码。。。
<form method="post" action="./Problem_retrive" >
<input type="submit" value="Refresh">
</form>
服务器上正在执行的方法是Problem\u retive。doPost()
基于此,我们需要了解当点击“转发”按钮时执行的是什么代码。jsp。您已经描述过,此“前进”按钮显示索引。jsp
,但不包括数据库中的数据。让我们假设其调用Edit\u调用。doPost()
*。
*我建议您在所有doPost()方法中放置调试器断点以确认此假设,或者只参考您的系统。出来如果无法调试,则返回println()语句。
因此,您需要比较问题中发生的情况。doPost()
到Edit\u调用中未发生的内容。doPost()
当没有数据显示时。我怀疑您没有调用请求。setAttribute()
rs=prc.select_table();
RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
request.setAttribute("rs", rs);
rd.forward(request, response);
关于好设计的补充说明
您可以阅读有关MVC设计模式的内容,以获得更好的代码设计方法。
我有一个名为campaignMaint.java的Servlet,其中有一个doGet和一个doPost,还有一个名为jcampaignMaint.JSP的JSP。在输入URL/campaignMaint?campaign=Treasury时,doGet将数据构建为数组并执行: jcampaignMaint.jsp然后构建一个包含一些可修改字段的表,如下所示: 单击Submit按钮时,HTTP P
我有一个小应用程序(HTML表单、servlet作为控制器和jsp文件),我试图弄清楚为什么我不能将请求从servlet转发到jsp文件。 问题是从html提交后,显示“HTTP状态404” null 谢谢! 项目层次结构:http://s23.postimg.org/kgt7r7lwb/capture.jpg main.html: 更新:问题可能出在Controller.java。当我尝试下面的
本文向大家介绍JSP、Servlet中get请求和post请求的区别总结,包括了JSP、Servlet中get请求和post请求的区别总结的使用技巧和注意事项,需要的朋友参考一下 在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法。前两天看《Head First Servlets & JSP》看到其中讲关于Servlet中get请求和post请求
我是jQuery新手,在jsp中将数据从servlet显示到jqGrid时遇到了困难。我使用google gson将数据从ArrayList转换为字符串变量json。当我运行项目时,它在控制台中显示json数据,并显示一个空网格。 Student.java 学生数据服务。JAVA 我的servlet代码: ervlet.java 我的JSP页面: 滑溜的网格演示。jsp
我有一个login JSP,它从文本框中的用户获取用户名/密码,并在提交时使用POST方法将用户名/密码参数转发到login Servlet。 现在我正在使用介于两者之间的Paros代理(作为中间人攻击)来陷阱参数。从JSP接收的参数在Paros中以纯文本形式捕获。
我需要帮助将结果集值从servlet转发到jsp,而不使用JSTL实现 工作流程: 用户在输入框中输入值并单击搜索按钮 单击搜索时会调用servlet。servlet专注于数据库实现并将结果集值转发到请求所在的同一jsp页面。 问题:我的结果集大小是3,但仅表顶部的值就打印在我的jsp页面中。其余2个值缺失。我希望所有的值都打印在我的jsp页面中。 这是我的代码: Productlist.jsp