更正改动(2014-05-30 13:47:22):有的IDE中web.xml会报这个错:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'. One of '{"http://
 xmlns.jcp.org/xml/ns/javaee":enabled, "http://xmlns.jcp.org/xml/ns/javaee":async-supported, "http://
 xmlns.jcp.org/xml/ns/javaee":run-as, "http://xmlns.jcp.org/xml/ns/javaee":security-role-ref, "http://
 xmlns.jcp.org/xml/ns/javaee":multipart-config}' is expected.

你能够无视它。可是假设认为不舒服的话。能够将<load-on-startup>1</load-on-startup>放到<init-param>这个节点的后面

前话:

           写了半年的Flex,也就是一个做一个WEB的视频监控浏览端,已经初步成型。如今是要做一个管理平台,于是最终又要用回JAVA了,可是一切都变的陌生了,

比方写个方法或者定义一个变量。总是会用Flex的语法去写,曾经都是用Struts2 Hibernate Spring框架的,如今据说springMVC更流行了,于是花了这一周时间入了下门,感觉

确实不错,我是看的这个系列教程,跟开涛学SpringMvc http://jinnianshilongnian.iteye.com/category/231099。写的非常赞,通俗易懂。非常感谢。

后来顺便也看了下这个前端开发框架Bootstrap也非常不错,简直是后端开发者的福音啊,而且我发现改版后的CSDN登录界面也用到了这个框架,所以学习了下,也是在

一个系列博客中看的,http://www.cnblogs.com/aehyok/p/3404867.html#title02 事实上是跟Bootstrap中文网的教程几乎相同。可是在博客中看比較集中,而且文件夹清晰,当时在中文网看的12栅格布局是真心没看懂。后来在这位仁兄的博

客中看懂了,在这里非常感谢!

今天周五。所以简单的整合了一下来熟悉这周看的东西

老规矩(有图有真相),先看下相关效果图吧:

登录界面:(Bootstrap的样式还挺赞的吧)

主页面:

加入:

改动:(上面的改动和删除你要点击一下某一行。才干进行操作)

项目文件夹结构:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ2FubGluZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

部分配置和相关代码:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="Bufoon_WebApp_ID" version="3.1">
<display-name>WebApp</display-name> <!-- log4j配置。假设不须要以下的配置,能够将log4j文件放到src文件夹下,log4j会默认载入 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/properties/log4j.properties</param-value>
</context-param> <context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener> <!-- 加入对spring的支持 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/xml/applicationContext.xml</param-value>
</context-param> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 加入springMVC前端控制器 -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<!-- 加入配置文件,假设不想要厦门的配置。能够将 [servlet-name]-servlet.xml放到WEB-INF文件夹下,springMVC会默认载入 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/xml/springMVC-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <!-- 加入UTF-8编码支持 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- 当hibernate+spring配合使用的时候,假设设置了lazy=true,那么在读取数据的时候,当读取了父数据后, hibernate会自己主动关闭session。这样,当要使用子数据的时候,系统会抛出lazyinit的错误,
这时就须要使用spring提供的 OpenSessionInViewFilter,OpenSessionInViewFilter主要是保持Session状态
知道request将所有页面发送到client,这样就能够解决延迟载入带来的问题 -->
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>*.do,*.action</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>

springMVC-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 注解扫描包 -->
<context:component-scan base-package="com.bufoon.controller" /> <!-- 开启注解 -->
<mvc:annotation-driven /> <!-- 静态资源的訪问 -->
<mvc:resources location="/plugins/" mapping="/plugins/**" /> <!-- 返回JSON模版 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>
<!-- 注意:FreeMarker与SpringMVC集成时,其配置一定要放在SpringMVC的配置之前 -->
<!-- 否则:在訪问"/getUser"时server就会报告[HTTP Status 404 - /WEB-INF/jsp/myfree.jsp] -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 指定FreeMarker模板文件文件夹 -->
<property name="templateLoaderPath" value="/WEB-INF/app/ftl/" />
<!-- 编码设置 -->
<property name="freemarkerSettings">
<props>
<prop key="defaultEncoding">UTF-8</prop>
</props>
</property>
</bean>
<bean id="freeMarkerViewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html; charset=UTF-8" />
</bean> <!-- 定义视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/app/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

UserController.java

package com.bufoon.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.Map; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import com.bufoon.entity.User;
import com.bufoon.model.UserModel;
import com.bufoon.service.UserService;
import com.bufoon.util.Constants;
import com.bufoon.util.Util;
import com.bufoon.util.page.PageResultSet; @Controller
@RequestMapping("/user")
public class UserController { @Resource
private UserService userService; @RequestMapping("/userLogin")
public String userLogin(UserModel userModel, Model model){
userModel.setPassword(Util.encryptMD5(userModel.getPassword()));
User user = userService.findUserByByCondition(userModel);
if (user == null) {
model.addAttribute("errorInfo", "you password is error!");
return "login";
} Constants.LOGIN_USER = user.getUsername();
return "redirect:/user/index";
}
@RequestMapping("/addUser")
public String addUser(UserModel userModel){
Date date = new Date();
User user = new User();
BeanUtils.copyProperties(userModel, user); //实体属性复制,将userModel中的属性值拷贝到User中
user.setPassword(Util.encryptMD5(userModel.getPassword()));
user.setCreateTime(date);
user.setUpdateTime(date);
user.setUpdateUser(Constants.LOGIN_USER);
user.setCreateUser(Constants.LOGIN_USER);
userService.saveUser(user);
return "redirect:/user/index";
}
@RequestMapping("/index")
public ModelAndView index(UserModel userModel, HttpServletRequest request) {
if(Util.isNull(Constants.LOGIN_USER)){
ModelAndView mav = new ModelAndView("login");
mav.addObject("errorInfo", "user is overdue!");
return mav;
}
return new ModelAndView("userList");
} @RequestMapping("/getUser")
public void getUser(HttpServletRequest request, HttpServletResponse response, Model model) {
int id = Integer.parseInt(request.getParameter("userId"));
User user = userService.getUserById(id);
Map<String, Object> map = new HashMap<String, Object>();
map.put("user", user);
model.addAttribute("user", user);
} @RequestMapping("/updateUser")
public String updateUser(UserModel userModel){
Date date = new Date();
User user = userService.getUserById(userModel.getId());
if (Util.isNull(userModel.getPassword())) {
userModel.setPassword(user.getPassword());
}else {
userModel.setPassword(Util.encryptMD5(userModel.getPassword()));
}
userModel.setCreateTime(user.getCreateTime());
userModel.setUpdateTime(date);
userModel.setCreateUser(Constants.LOGIN_USER);
userModel.setUpdateUser(Constants.LOGIN_USER);
BeanUtils.copyProperties(userModel, user);
userService.updateUser(user);
return "redirect:/user/index";
} @RequestMapping("/deleteUser")
public String deleteUser(HttpServletRequest request){
int id = Integer.parseInt(request.getParameter("userId"));
User user = userService.getUserById(id);
userService.deleteUser(user);
return "redirect:/user/index";
} @RequestMapping("/exit")
public String exit(){
Constants.LOGIN_USER = null;
return "redirect:/";
}
//返回json
@RequestMapping("/getJsonUserList")
@ResponseBody
public ModelMap getJsonUserList(UserModel userModel, HttpServletRequest request, HttpServletResponse response) {
ModelMap modelMap = new ModelMap();
response.setHeader("Access-Control-Allow-Origin", "*");
String sPage = request.getParameter("page");
int page = 1;
if (!Util.isNull(sPage)) {
page = Integer.parseInt(sPage);
}
PageResultSet<User> userPageResult = userService.findPageUserList(userModel, page, Constants.PAGE_SIZE); modelMap.addAttribute("event",userPageResult.getList());
modelMap.addAttribute("pageBean", userPageResult.getPage());
modelMap.addAttribute("pageCount",userPageResult.getPage().getTotalPage());
return modelMap;
} }

代码还是挺多的,不贴了

DEMO源代码到这里下载吧:http://download.csdn.net/detail/soanl/7391345

说明:在项目的doc下有数据库文件。

新建数据库名为 db_shf,编码设为utf-8。然后导入即可

执行 http://你的ip:端口port/WebApp  username:admin,密码:admin

下周開始把mina学习下。由于公司项目之间的通信都是用socket通信的,在这个管理平台也要用到socket同主server通信

http://blog.csdn.net/songanling/article/details/26732977 by 布丰(Bufoon)

Spring4 SpringMVC Hibernate4 Freemaker 整合样例的更多相关文章

  1. Spring4 SpringMVC Hibernate4 Freemaker 集成示例

    变更更正(2014-05-30 13:47:22):一些IDE在web.xml我们会报告这个错误: cvc-complex-type.2.4.a: Invalid content was found ...

  2. spring4+springmvc+hibernate4 demo

    来自 CSDN . 其实下面的更好:加入了maven集成.Spring4 MVC Hibernate4集成 下面也是一篇讲的很详细的文章: hibernate4无法保存数据 而自己遇到的hiberna ...

  3. Spring4+SpringMVC+Hibernate4整合入门与实例

    配置web.xml <? xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&q ...

  4. springMVC+Hibernate4+Spring整合一(配置文件部分)

    本实例采用springMvc hibernate 与 spring 进行整合, 用springmvc 取代了原先ssh(struts,spring,hibernate)中的struts来扮演view层 ...

  5. SSH(Spring4+Struts2+Hibernate4)框架整合

    1.加入Spring4 ①. 加入 jar 包

  6. mysql+ssh整合样例,附源代码下载

    项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源代码下载地址:http://download.csdn.net/detail/ ...

  7. springMVC+Hibernate4+spring整合实例二(实例代码部分)

    UserController.java 代码: package com.edw.controller; import java.io.IOException; import java.io.Print ...

  8. Struts2+Spring4.2+Hibernate4.3整合

    一.导包 antlr-2.7.7.jarasm-3.3.jarasm-commons-3.3.jarasm-tree-3.3.jarcom.springsource.com.mchange.v2.c3 ...

  9. spring4.x hibernate4.x 整合 ehcache 注解 annotate

    [From] http://my.oschina.net/alexgaoyh/blog/348188

随机推荐

  1. JS实现二叉树的创建和遍历

    1.先说二叉树的遍历,遍历方式: 前序遍历:先遍历根结点,然后左子树,再右子树 中序遍历:先遍历左子树,然后根结点,再右子树 后续遍历:先遍历左子树,然后右子树,再根结点   上代码:主要还是利用递归 ...

  2. 撩课-Web大前端每天5道面试题-Day16

    1.for循环中的作用域问题? 写出以下代码输出值,尝试用es5和es6的方式进行改进输出循环中的i值. ; i<=; i++) { setTimeout(function timer() { ...

  3. hdu 1075 What Are You Talking About 字典树模板

    What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K ...

  4. C#对Windows服务组的启动与停止

    Windows服务大家都不陌生,Windows服务组的概念,貌似MS并没有这个说法. 作为一名软件开发者,我们的机器上安装有各种开发工具,伴随着各种相关服务. Visual Studio可以不打开,S ...

  5. K:汉诺塔问题

    相关介绍:  汉诺塔问题是一个通过隐式使用递归栈来进行实现的一个经典问题,该问题最早的发明人是法国数学家爱德华·卢卡斯.传说印度某间寺院有三根柱子,上串64个金盘.寺院里的僧侣依照一个古老的预言,以上 ...

  6. Struts2 (三) — OGNL与值栈

    一.OGNL表达式 1.概述 1.1什么是OGNL ​ OGNL是Object-Graph Navigation Language的缩写,俗称对象图导航语言. 它是一种功能强大的表达式语言,通过它简单 ...

  7. PHP 经典算法

    <?  //--------------------  // 基本数据结构算法 //--------------------  //二分查找(数组里查找某个元素)  function bin_s ...

  8. OpenStack IceHouse 部署 - 2 - 网络与软件环境初始化

    OpenStack应用:节点软硬件环境配置    节点硬件与IP分配 实验室网关 10.14.39.1 各个节点 节点名称 硬件(Linux硬盘分区,RAM,CPU) ip地址(接口) 作用与运行的服 ...

  9. js历史记录

    1. history 是什么? window上的一个对象,由来存储浏览器访问过的历史 2. 用途: 可以动态跳转任意一个已在历史记录中的地址 3..history方法: 1.forward() : 向 ...

  10. 使用WampServer搭建本地PHP环境,绑定域名,配置伪静态

    倡萌之前介绍过 USBWebserver 快速搭建本地PHP环境 ,推荐USBWebserver的原因在于它是绿色的,不需要安装,想使用就手动运行下即可.但是 USBWebserver 也有自身的弱点 ...