2012-05-10 46 views
-1

在学习JSP,Servlets和DAO时,我遵循this教程,并希望了解一点关于使用JSP/Servlet编辑SQL Server表的正确方法。在处理数据库时JSP,Servlet,DAO之间的通信

无论如何,我有:

  • POJO.java
  • DAO.java
  • SERVLET.java
  • PAGE.jsp

如何实现另一个JSP页面显示数据行?是否有可能创建一个JSP页面来调用DAO/Servlet进行数据提取,然后在其自身(JSP)上显示数据?

打开网站时,我打电话给Servlet,过程如下:Servlet -> DAO -> JSP。我是否需要另一个Servlet + JSP文件,或者可以添加仅使用当前Servlet填充页面的JSP文件?

我的问题应该可以去教程的作者,但我希望在这里从不同的角度来看一些建议。

+1

请您详细说明_I'm调用Servlet:Servlet - > DAO - > JSP。我应该如何为用户添加第二个站点来简单浏览数据?另一个Servlet和另一个JSP文件,或者我可以添加只使用当前Servlet的JSP文件?_ –

+0

@JigarJoshi我的意思是这个例子是调用一个返回JSP页面的Servlet--这就像CMS一样。如何为没有编辑权限的人添加首页?它应该是另一个Servlet,还是JSP可以调用与CMS相同的Servlet。 – yosh

+1

没有相同的servlet可以完成这项工作,你可以解决当前用户的角色并将其存储在会话中,从会话中检查如果用户具有该角色然后启用视图,那么也可以在servlet/service上添加此安全性 –

回答

1

如果我正确理解你想要的东西,那么你已经拥有了几乎所有你需要的东西来完成你想要的任务。 DAO有一个名为list()的方法,它将查询数据库并返回雇员对象的数组列表,以便您在那里很好。然而,servlet和jsp页面需要修改才能使其工作,但是将相关代码添加到servlet中以使用DAO来获取员工列表。 之前try块的开头添加

ArrayList<employee> employeeList = null; 

这个代码添加到现有的代码在servlet的process()方法。

else if (StringUtils.equals(actionContext, "list")) { 
    employeeList = dao.list(); 
    request.setAttribute("employeeList", employeeList); 
    } 

在JSP中的JavaScript将不得不为了方便这一点,因为JavaScript的是驾驶什么传递给servlet改变,你将有一个按钮添加到会调用JavaScript函数的JSP与此类似。

<input type='button' value='List Employees' onclick="submitForm('list')" /> 

这应该指向您正确的方向,并允许您仍然使用教程中的代码稍作修改。希望有所帮助。

+0

那么,我需要一个完全不同的JSP用于默认用户网站。我可以通过'request.getRequestDispatcher(“/ jsp/default.jsp”)来实现。forward( request,response);',对吧?可以在default.jsp的某处添加一个登录表单,将用户切换到可编辑的“管理模式”? – yosh

+1

web.xml中的welome-file-list将index.jsp列为欢迎文件,所以如果输入“http:// localhost:8080/Example14 /”而不是Web应用程序的默认jsp “http:// localhost:8080/Example14/Servlet3”,你可以在那里添加登录表单。当您在地址栏中输入“http:// localhost:8080/Example14/Servlet3”时,您将绕过index.jsp并直接调用该servlet,然后该servlet将您重定向到employee_maintenance.jsp。 – ChadNC

+0

非常感谢:)但是,如果我希望此index.jsp同时显示登录表单和不可编辑的数据库记录,该怎么办。我如何从index.jsp调用servlet(执行整个查询处理)? – yosh

0

如果我理解你的问题的权利,我可以让你做下一个:
1.附加你的数据到reguest(使用request.setAttribute(Name,Object));
2.使用jsp:import连接下一个JSP页面;
3.在这些servlet中,通过request.getAttribute(Name)提取数据,将其转换为您需要和使用的类型。

如何,我不知道这是否足够正确 - 因为我知道,你实际上不会复制你的var,所以这不会占用额外的时间或内存,但我不能当然,如果这是解决这个问题的最“充分的”方法......