`
fantlam
  • 浏览: 99347 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

我的SSH项目之旅(7.个人中心之分页和Junit测试)

阅读更多

接下来开发个人中心

 

个人中心包括内容:
1、 修改个人信息
2、 列出我提出的问题
3、 列出我回答过的问题
4、 列出被采纳的问题
分页大概的流程 从后台DAO去数据

  public List queryByItem(int itemid, int currentPage, int lineSize)
      throws Exception {
    // TODO Auto-generated method stub
    List all = null;
    String hql = "FROM Question AS q WHERE q.itemid=?";
    Query q = super.getSession().createQuery(hql);
    q.setInteger(0, itemid);
    q.setFirstResult((currentPage - 1) * lineSize);
    q.setMaxResults(lineSize);
    all = q.list();
    return all;  
  }




经过struts action


public ActionForward selectitem(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response) {
    List all = null;
    int currentPage = 1;
    int lineSize = 10;
    int allRecorders = 0;
    try {
      currentPage = Integer.parseInt(request.getParameter("cp"));
    } catch (Exception e) {
    }
    try {
      allRecorders = this.questiondao.getByItemCount(Integer
            .parseInt(request.getParameter("itemid")));
      all = this.questiondao.queryByItem(Integer.parseInt(request
            .getParameter("itemid")), currentPage, lineSize);
    } catch (NumberFormatException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    request.setAttribute("currentPage", currentPage);
    request.setAttribute("lineSize", lineSize);
    request.setAttribute("allRecorders", allRecorders);
    request.setAttribute("all", all);
    request.setAttribute("jspUrl", "show.do");
    request.setAttribute("status", "selectitem");
    request.setAttribute("flagname", "itemid");
    request.setAttribute("flagvalue", request.getParameter("itemid"));

    try {
      request.setAttribute("allitem", this.itemdao.queryAll());
    } catch (Exception e) {
      e.printStackTrace();
    }

    return mapping.findForward("showlist");

  }









JSP页面嵌入相关代码


  <jsp:include page="split_page.jsp">
    <jsp:param name="jspUrl" value="${jspUrl}" />
    <jsp:param name="lineSize" value="${lineSize}"/>每页显示条数
    <jsp:param name="allRecorders" value="${allRecorders}" />
    <jsp:param name="keyWord" value="<%=request.getAttribute("keyWord")%>" />
    <jsp:param name="currentPage" value="${currentPage}" />
    <jsp:param name="status" value="${status}" />
    <jsp:param name="flagname" value="${flagname}" />
    <jsp:param name="flagvalue" value="${flagvalue}" />
    <jsp:param name="searchFlag" value="T" />
  </jsp:include>

分页程序部分代码 split_page.jsp

// 计算总页数
  pageSize = (allRecorders+lineSize-1)/lineSize ;

<form name="spage" action="<%=jspUrl%>" onSubmit="change()">
<input type="hidden"
  name="status" value="${status}"> <input type="hidden"
  name="${param.flagname}" value=${param.flagvalue}> <%
if ("T".equals(searchFlag)) {
%> 输入查询关键字:<input type="text" name="kw"
  value="<%=keyWord.equals("null") ? "" : keyWord%>"> <input
  type="submit" value="查询"> <br>
<br>




<%
if (allRecorders > 0) {
%> <input type="button" value="首页" onClick="openPage(1)"
  <%=currentPage == 1 ? "disabled" : ""%>> <input type="button"
  value="上一页" onClick="openPage(<%=currentPage - 1%>)"
  <%=currentPage == 1 ? "disabled" : ""%>> <input type="button"
  value="下一页" onClick="openPage(<%=currentPage + 1%>)"
  <%=currentPage == pageSize ? "disabled" : ""%>> <input type="button"
  value="尾页" onClick="openPage(<%=pageSize%>)"
  <%=currentPage == pageSize ? "disabled" : ""%>> <input type="hidden"
  name="cp" value=""> <font color="red" size="5"><%=currentPage%></font>
/ <font color="red" size="5"><%=pageSize%></font> 跳转到 <select
  name="selpage" onChange="selOpenPage()">
  <%
  for (int x = 1; x <= pageSize; x++) {
  %>
  <option value="<%=x%>" <%=currentPage == x ? "selected" : ""%>><%=x%></option>
  <%
  }
  %>
</select> <%
}
%>

Spring Junit4测试

public class UserDAOTest extends AbstractDependencyInjectionSpringContextTests { @Override复写父类的方法,找到配制文件 protected String[] getConfigLocations() { // TODO Auto-generated method stub return new String[]{"classpath:applicationContext.xml"}; } //引入在Spring注入的bean private UserDAO userdao; public void setUserdao(UserDAO userdao) { this.userdao = userdao; } public void testLoadUser() throws Exception{ // User user=this.userdao.queryByUserid("fantlam"); // assertNotNull(user); boolean b=this.userdao.isExists("fantlam", "你在吗", "我在"); assertEquals(true,b); } //可以直接运行程序 public static void main(String[] args){ // junit.swingui.TestRunner.run(UserDAOTest.class);因为conmon-logging的原因,使用junit.awtui或junit.swingui包下的TestRunner会出现错误/ 故采用junit.textui包 junit.textui.TestRunner.run(UserDAOTest.class); } }

 

 

applicationContext.xml
  <bean id="userdao" class="dj.fantlam.myssh.dao.UserDAO"
    abstract="true">
  </bean>
<bean id="userdaoimpl" class="dj.fantlam.myssh.daoimpl.UserDAOImpl"
    parent="userdao">
    <property name="sessionFactory">
      <ref bean=" sessionFactory " />
    </property>
  </bean>

关于spring junit测试的类关系

org.springframework.test

Class AbstractTransactionalDataSourceSpringContextTests

java.lang.Object

junit.framework.Assert

    junit.framework.TestCase

      org.springframework.test.ConditionalTestCase

        org.springframework.test.AbstractSpringContextTests

            org.springframework.test.AbstractSingleSpringContextTests

              org.springframework.test.AbstractDependencyInjectionSpringContextTests

                org.springframework.test.AbstractTransactionalSpringContextTests

                    org.springframework.test.AbstractTransactionalDataSourceSpringContextTests

All Implemented Interfaces:

Test








org.hibernate.QueryException: could not resolve property: qid of: dj.fantlam.myssh.vo.Answer [SELECT COUNT(q.qid) FROM dj.fantlam.myssh.vo.Question AS q WHERE q.qid IN (SELECT a.qid FROM dj.fantlam.myssh.vo.Answer AS a WHERE a.userid=?)]

解决方法:
answer.hbm.xml添加属性
    </property>
          <property name="qid" type="java.lang.Integer">
        <column name="qid" />
    </property>

加入
<many-to-one name="question"
    class="dj.fantlam.myssh.vo.Question" fetch="select"
    insert="false" update="false">
    <column name="qid" />
    </many-to-one>

这样做了之后的确可以解决问题,但破坏了表的关联属性,导致无法进行其它插入等操作,所以这种方法不行。
根据表的一对多的关系,把整个HQL语句改成
  String hql = "SELECT COUNT(q.qid) FROM Question AS q WHERE q.qid IN (SELECT a.question.qid FROM Answer AS a WHERE a.userid=? AND status=?)";
然后把之前改过的东西还原回来(把红色的都去掉) 这样就没问题了
分享到:
评论

相关推荐

    junit的jar包

    junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions.TestSetup.class junit.extensions.package-info.class junit.framework....

    使用junit测试ssh中的dao

    标题“使用junit测试ssh中的dao”涉及到的是Java开发中的单元测试技术,特别是针对SSH(Struts2、Spring、Hibernate)框架中的数据访问对象(DAO)进行测试。SSH是Java Web开发中常用的三大开源框架,它们协同工作以...

    junit-4.12.jar下载

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这里我们关注的是`junit-4.12.jar`版本,这是一个重要的里程碑,因为它带来了许多改进和新特性。让我们深入...

    junit工具jar包

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这个“junit工具jar包”是JUnit 4.8.1版本,一个稳定且广泛使用的版本,提供了丰富的断言方法和测试注解,便于...

    junit5.jar

    在进行实际测试时,可以创建一个继承自`org.junit.jupiter.api.TestInstance`的测试类,利用JUnit Jupiter提供的各种注解编写测试用例。例如: ```java import org.junit.jupiter.api.DisplayName; import org....

    JUnit使用指南及作业规范.rar

    JUNIT JUNIT 固件的安装与拆除 (测试方法启动和结束之前要做的) (测试方法启动和结束之前要做的) .... .... 6 Eclipse Eclipse 中使用 junit junitjunit (有了开发工具对 (有了开发工具对 junit的支持后) .....

    Junit单元测试所需要的两个jar包

    JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。 2 单元测试概念 单元:在Java中,一个类就是一个单元 单元测试:程序猿编写的一小段代码,用来对某个类中的...

    实验三:junit测试.rar

    JUnit是Java编程语言中最常用的单元测试框架之一,深受开发者喜爱。本实验将深入探讨JUnit测试的基本概念、用法以及如何通过它来测试Java代码。 JUnit是一个开源的测试框架,它为Java程序员提供了编写和运行可重复...

    Junit测试案例使用

    6. Junit 的下载和安装:去 Junit 主页下载最新版本 3.8.1 程序包 junit-3.8.1.zip,用 winzip 或 unzip 将 junit-3.8.1.zip 解压缩到某一目录名为$JUNITHOME,将 junit.jar 和$JUNITHOME/junit 加入到 CLASSPATH 中...

    junit测试.zip

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这个“junit测试.zip”文件包含了JUnit库的jar包,它用于帮助进行程序的单元测试。单元测试是对软件中的最小可...

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...

    JavaSE测试类必备的两个jar包 ——junit-4.12.jar、hamcrest-core-1.3.jar

    JavaSE测试类必备的两个关键库是`junit-4.12.jar`和`hamcrest-core-1.3.jar`。这两个库在Java开发中扮演着重要角色,特别是对于单元测试和质量保证。 首先,我们来详细了解`junit-4.12.jar`。JUnit是Java编程语言中...

    Junit5.jar包,代码测试工具

    JUnit5是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的测试能力,确保代码的质量和稳定性。本篇文章将详细介绍JUnit5的核心组件、主要功能以及如何在项目中使用。 JUnit5由三个主要模块组成...

    javaweb中.java文件测试需要的框架(junit测试).rar

    在Java Web开发中,进行单元测试是确保代码质量与可靠性的关键步骤。JUnit是一个流行的、开源的...通过这个压缩包文件,开发者可以学习到如何在Java Web项目中设置和运行JUnit测试,提高代码质量,并确保项目稳定可靠。

    Java单元测试之JUnit

    在这个"Java单元测试之JUnit"的代码实践中,我们将深入探讨JUnit的基本使用方法以及它在Java项目中的应用。 首先,JUnit是一个开源的、基于Java的测试框架,它允许开发者编写可执行的测试用例来检查代码的功能。...

    junit-4.10.jar及使用方法

    JUnit是Java编程语言中最常用的单元测试框架之一,它极大地简化了对代码进行验证和调试的过程。这个名为"junit-4.10.jar"的文件是JUnit 4.10版本的库,其中包含了运行和编写单元测试所需的所有类和接口。在本文中,...

    JUnit单元测试.zip

    7. **测试套件和分类**:如何组织多个测试类,并使用`@RunWith(Suite.class)`和`@Suite.SuiteClasses`进行批量运行。 8. **假对象和模拟**:介绍如何使用Mockito等库进行依赖注入的模拟,以便隔离测试。 9. **测试...

    system-rules, 用于测试使用 java.lang.System的代码的JUnit规则的Collection.zip

    system-rules, 用于测试使用 java.lang.System的代码的JUnit规则的Collection 系统规则 系统规则是用于测试使用 java.lang.System的代码的JUnit规则的Collection 。安装系统规则可以从 Maven 中心使用。&lt;dependency&gt;...

    JUnit测试Sum_Divide

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。在"JUnit测试Sum_Divide"这个项目中,我们可以理解为作者创建了一个用于测试整数除法操作的测试类或方法。下面...

    junit-4.11.jar

    7. **Hamcrest集成**:JUnit 4.11与Hamcrest匹配器库紧密集成,提供了一种声明式的方式来编写断言,使得测试表达更直观。 8. **与其它库的兼容性**:JUnit 4.11能够与其他Java测试库如Mockito、PowerMock等良好协作...

Global site tag (gtag.js) - Google Analytics