Spring MVC+hibernate 项目的总结(对初学者)

这个是自己第一个用spring mvc 架构编写的web应用。遇到了不少的知识点, 在项目过程中,随着问题的一个一个解决,也收获了不少。 在此总结一下,希望能对大家有个帮助。

初期软件安装需求

  1. 安装eclipse 最好直接安装jee版本, 如果安装se版本要下载web插件。google一下插件的名字。

  2. 安装Tomcat文件,解压缩,然后在eclipse中的windows-》perfermance中找到server,设置Tomcat 文件夹的路径。

  3. 安装Mysql,解压或者安装之后,将mysql-connector-java-5.1.38-bin.jar 文件放到Tomcat-》lib文件夹下面, 将tomcat与mysql进行关联。

  4. Spring配置: 下载springsource-tool-suite-3.7.3.RELEASE-e4.5.2-updatesite, 里面的lib文件夹中的jar文件是每次用到spring时进行关联的文件。 注意,所有spring的jar版本要一样。还要引用commons-logging-1.2.jar

文件结构

下图中比较重要的是这个三个.xml的配置文件 上面那两个是针对spring mvc 的, 下面的web.xml 是针对java web的,具体的配置代码就不放了,网上查查很多的。而且如果不想用这个.xml配置文件的 也可以用@configuration这个。需要注意的是这个配置文件一定要配置好,不然会非常麻烦。
这里写图片描述
我在这个项目中用到的.jar包
这里写图片描述

项目中的注意事项

项目的架构

  1. 前端-主要是jsp编写的 里面用到了一个购买的模板,其他的技术要点就是jquery、bootstrap和jstl
  2. 服务器端- 主要就是通过各种@controller中的方法来实现具体功能。需要注意的是路径和对get 和 post 的支持, 如果不在方法的括号中添加RequestMethod, 则两种都支持。
    这里写图片描述
  3. 关于 DAO层,service层, controller层, view层下面这篇文章写的很清楚了
    (http://blog.csdn.net/zdwzzu2006/article/details/6053006)
  4. Javabean
    Spring MVC和hibernate这种架构是将要存到数据库中的数据以javabean的形式通过hibernate实现数据的存储和读取的。
    基本的Javabean格式是private的属性, 相关的setter和getter,没有constructor, 类必须声明为public(外部可以访问到)。
    还有一点要提到的是@autowired 注释, 这个spring提供的注释是省去了每次生成一个object需要new 这个过程。还有就是不用在.xml文件中配置DAO(Data Access Object)层的bean,具体的原理大家可以谷歌下。

翻页功能

我是在网上找了一个Page的class,这一个class就够了,它主要记录每页的大小(也就是每页最多显示的记录条数),页数,总记录条数,当前页,第一页,下一页,最后一页。

那么如何使用这个class实现翻页效果呢?这里我就说一下大概的流程。
在前端需要有一个hidden的input来记录当前页

<input name="page.curPage" id="curpage" value="1" type="hidden"></input>

然后前端的分页我用的是bootstrap, 大家可以去bootstrap查一下pagination。
这个代码比较多,就放一小段比较关键的在这里

<c:forEach var="i" begin="1" end="${page.pageCount}"> 
<c:if test="${i==page.curPage}">
    <c:choose>          
    <c:when test="${page.curPage==1}">
      <li class="active" ><a href="#">${i} <span class="sr-only">(current)</span></a></li>
      <script>
           document.getElementById('previous').className = "disabled";
      </script>
    </c:when>
    <c:otherwise>
      <c:choose>
      <c:when test="${page.curPage==page.pageCount}">
          <li class="active" ><a href="#">${i} <span class="sr-only">(current)</span></a></li>
          <script>
                $(document).ready(function(){
                    document.getElementById('next').className = "disabled";
                });
          </script>
      </c:when>
      <c:otherwise>
          <li class="active" ><a href="#">${i} <span class="sr-only">(current)</span></a></li>
      </c:otherwise> 
      </c:choose>   
    </c:otherwise>            
    </c:choose>
</c:if> 
function forward(curpage){  
     document.getElementById("curpage").value=curpage;  
     document.formUser.submit();    
}

后台controller的作用主要是new一个page的Object 然后在dao层和view层来回传递。

@RequestMapping(value = "/userControl.do", method = RequestMethod.GET)
public String userControl(ModelMap model,HttpServletRequest req) {
      Page page = new Page();
      HttpSession session = req.getSession();
      session.removeAttribute("search");
      List<User> users = userService.listUsers(page);
      model.addAttribute("page",page);
      model.addAttribute("Users", users);
      model.addAttribute("command", new User());
      return "result";
}

在DAO层page的用法

public List<User> checkName(String name, Page page){
  String hql = "FROM User WHERE name like :name";
  Session session = this.sessionFactory.getCurrentSession();
  Query query = session.createQuery(hql);
  query.setParameter("name","%"+name+"%");
  page.setRecordCount(query.list().size());
  page.freshPage(); 
  query.setFirstResult((page.getCurPage() - 1) * page.getPageSize());  
  query.setMaxResults(page.getPageSize()); 
  List<User> users = query.list();
  return users;
}

上传图片

对于上传文件和图片需要注意的是windows下的路径需要\转义成/

public class FileUpload {

    public static String uploadFile(MultipartFile file, HttpServletRequest request) throws IOException {

        String filePath = "C:\\我的文件夹\\Tomcat\\webapps\\RFID\\upload\\";
        String fileName = file.getOriginalFilename();  
        File tempFile = new File(filePath, fileName);  
        if (!tempFile.getParentFile().exists()) {  
            tempFile.getParentFile().mkdir();  
        }  
        if (!tempFile.exists()) {  
            tempFile.createNewFile();  
        }  
        file.transferTo(tempFile);  
        System.out.println(filePath + tempFile.getName());
        return "/RFID/upload/" + tempFile.getName();  
    }  

}

多条件搜索

多条件搜索用动态string作为hql的方法实现(建议),或者用criteria的查询方法(不建议)

@Transactional
    public List<Relic> searchRelicById(String name, String location_id, String category_id, Page page){
        Session session = this.sessionFactory.getCurrentSession();
        String hql = "FROM Relic r WHERE 1=1";
        if(name!=null && name!=""){
            hql=hql+" and r.name like '%"+name+"%'";
        }
        if(location_id!=null && location_id!=""){
            hql=hql+" and r.location.id = "+location_id;
        }
        if(category_id!=null && category_id!=""){
            hql=hql+" and r.category.id = "+category_id;
        }
        Query query = session.createQuery(hql);
        page.setRecordCount(query.list().size());
        page.freshPage(); 
        query.setFirstResult((page.getCurPage() - 1) * page.getPageSize());  
        query.setMaxResults(page.getPageSize()); 
        List<Relic> relics = query.list();          
        return relics;
    }

以上就是这个项目的总结,代码不方便上传,请见谅。


未经本人同意请勿转载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学透Spring从入门到项目实战这本PDF书籍是一个非常全面而且实用的学习资源。这本书主要分为几个部分,首先是Spring框架的基础知识介绍,包括IoC容器、AOP和Spring MVC等重要概念和特性。通过深入理解这些基础知识,可以帮助读者建立起对Spring框架整体架构的完整认识。 接下来,书中介绍了Spring在实际项目中的应用。通过一些实战案例,读者可以学习如何使用Spring来构建企业级的应用程序。这些案例涵盖了从简单的CRUD操作到复杂的事务管理和安全性控制等各个方面。通过跟随案例的实现过程,读者可以亲身体验到Spring框架的各种功能以及如何正确地使用它们。 除了核心的Spring知识和实战案例,这本书还对Spring的扩展和整合提供了一些指导。例如,如何与其他流行的框架(如Hibernate、MyBatis等)进行整合,以及如何使用Spring Boot来简化项目的搭建和配置等。这些内容可以帮助读者进一步扩展和应用他们在Spring方面的知识。 总的来说,学透Spring从入门到项目实战这本PDF书籍是一个非常全面和实用的学习资源。通过学习这本书,读者可以从零基础开始掌握Spring框架的核心概念和使用方法,并通过实战案例的学习将所学知识应用到实际项目中。无论是初学者还是有一定经验的开发者,都可以从这本书中受益匪浅。 ### 回答2: 《学透Spring从入门到项目实战PDF》是一本介绍和教授Spring框架的教程书籍。Spring是一个开源的Java应用开发框架,可以帮助开发者构建可扩展、高效、可维护的应用程序。 这本书的特点在于它深入浅出地介绍了Spring框架的各个方面,从基础到高级应用都有涉及。首先,书中会对Spring框架的概念、特点和优势进行详细解释,帮助读者了解为什么要使用Spring。接着,书籍会着重介绍Spring的核心模块,如控制反转(IoC)和面向切面编程(AOP),以及如何使用这些模块来提高应用程序的可维护性和灵活性。 除了核心模块,书中还会介绍Spring的其他重要特性,如数据访问、事务管理、Web开发等。这些特性是开发企业级应用程序所必备的,而Spring框架提供了方便和高效的解决方案。此外,书中还会介绍如何使用Spring与其他流行的技术和框架配合使用,如Hibernate、MyBatis、Spring MVC等。 最后,书籍会包含一些实际项目案例,通过这些案例,读者可以了解如何将学到的知识应用到实际开发中。这些案例涵盖了不同类型的应用,如电子商务、社交网络等,读者可以选择合适的案例进行实践。 总之,《学透Spring从入门到项目实战PDF》是一本很好的学习和掌握Spring框架的参考书籍。它适合有一定Java编程基础的开发者,能够帮助他们全面理解Spring框架的各个方面,从而在实际项目中充分发挥其优势。 ### 回答3: 学透spring从入门到项目实战 pdf 是一本非常实用的书籍,对于想要学习并掌握Spring框架的人来说是一本不可或缺的参考资料。 这本书首先介绍了Spring框架的基本概念和原理,包括IoC(控制反转)和AOP(面向切面编程),帮助读者理解Spring是如何工作的。然后通过一系列的示例代码和实践项目,帮助读者逐步学习和掌握Spring的核心特性和使用方法。 在学习过程中,读者将会了解到Spring的依赖注入和Bean的管理,学会使用XML或者注解配置Spring的Bean;学习和使用Spring的AOP功能,实现对方法的拦截和增强;学习和使用Spring的JDBC和事务管理,使数据库的操作更加方便和简单;学习和使用Spring MVC,构建自己的Web应用程序;学习和使用Spring的测试和集成测试,确保代码的可靠性和正确性。 通过实践项目的方式,读者将会更好地理解和运用Spring框架的各种特性和功能。这本书的项目实例非常丰富,包括用户管理系统、购物车系统、电子商务网站等,可以帮助读者将所学的知识应用到实际的开发中。同时,这些项目实例还会涵盖一些常见的开发难点和解决方法,对于读者来说是非常有帮助的。 总之,学透spring从入门到项目实战 pdf 是一本循序渐进、理论与实践相结合的学习Spring框架的好书。通过学习这本书,读者可以系统地学习和掌握Spring的各种功能和使用方法,进而运用到实际的项目开发中。无论是初学者还是有一定经验的开发人员,都能从中受益匪浅。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值