SpringMVC、Spring和freemarker 开发指导

本文档详细介绍了如何使用SpringMVC、Spring和Freemarker进行开发,包括Freemarker模板引擎的介绍,后台及前台页面配置,控制层的SpringMVC实现,如配置支持、Controller编写,以及服务层和服务Bean配置。此外,还涉及持久层的DAO设计和配置,利用Hibernate和Ehcache进行数据操作。
摘要由CSDN通过智能技术生成

展现层

Freemarer介绍

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

后台页面

后台页面需要的文本信息在messages_zh_CN.properties中配置国际化属性

spring中配置好资源文件,使spring mvc在html文件能够读到资源文件信息。

读取控制层的属性非常简单,freemark只需用类似jsp的el表达式输出普通对象。对于控制层传输过来的集合对象可用freemark内置对象list来循环出来

前台模版页面

default目录相应的文件夹添加html,在html文件中引入freemark机制控制control层传输对象的显示。

控制层

SpringMVC简介

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 FreeMarker、JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

控制层实现

配置SpringMVC支持

Web.xml配置Spring后台核心调度器

<servlet>
	<servlet-name>JeeCmsAdmin</servlet-name>	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				/WEB-INF/config/jeecms-servlet-admin.xml
				/WEB-INF/config/plug/**/*-servlet-admin-action.xml
			</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
Web.xml配置Spring后台核心调度器匹配路径
<servlet-mapping>
		<servlet-name>JeeCmsAdmin</servlet-name>
		<url-pattern>/jeeadmin/jeecms/*</url-pattern>
</servlet-mapping>
Web.xml配置Spring前台核心调度器
<servlet>
		<servlet-name>JeeCmsFront</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				/WEB-INF/config/jeecms-servlet-front.xml
				/WEB-INF/config/plug/**/*-servlet-front-action.xml
			</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>
Web.xml配置Spring前台核心调度器匹配路径
<servlet-mapping>
		<servlet-name>JeeCmsFront</servlet-name>
		<url-pattern>*.jhtml</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>JeeCmsFront</servlet-name>
		<url-pattern>*.jspx</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>JeeCmsFront</servlet-name>
		<url-pattern>*.jsp</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>JeeCmsFront</servlet-name>
		<url-pattern>*.htm</url-pattern>
	</servlet-mapping>

Spring Controller

action.admin.main核心管理模块Controller

action.admin.assist辅助管理模块Controller

/**
@Controller标志该类是Srping Controller
**/
@Controller
public class WelcomeAct {
	/*
	*/index.do该地址将由Spring DispatchServlet负责调度给该方法处理
*/
	@RequestMapping("/index.do")
	public String index() {
		return "index";
	}
@RequestMapping("/top.do")
	public String top(HttpServletRequest request, ModelMap model) {
		// 需要获得站点列表
		List<CmsSite> siteList = cmsSiteMng.getList();
		CmsSite site = CmsUtils.getSite(request);
		CmsUser user = CmsUtils.getUser(request);
		// 传输对象到view层
		model.addAttribute("siteList", siteList);
		model.addAttribute("site", site);
		model.addAttribute("siteParam", AdminContextInterceptor.SITE_PARAM);
		model.addAttribute("user", user);
		return "top";
	}
	/**
	*装配service层对象,调用业务逻辑层
*/
	@Autowired
	private CmsSiteMng cmsSiteMng;
}

SpringMVC扩展配置

servlet-admin.xml 后台Spring国际化、拦截器、SpringMVC视图解析器配置

servlet-front.xml前台Spring国际化、拦截器、SpringMVC视图解析器配置

servlet-admin-action.xml  后台action配置文件

servlet-front-action.xml前台action配置文件

配置action bean

<bean id="welcomeAct" class="com.jeecms.cms.action.admin.WelcomeAct"/>

 

逻辑层

类存放包介绍

com.manager.main.impl核心service

com.manager.assist.impl 辅助service

com.service 采集、栏目、内容、流量公用service

service类代码编写样例

@Service
@Transactional
public class CmsConfigMngImpl implements CmsConfigMng {
	@Transactional(readOnly = true)
	public CmsConfig get() {
		CmsConfig entity = dao.findById(1);
		return entity;
	}

	public void updateCountCopyTime(Date d) {
		dao.findById(1).setCountCopyTime(d);
	}

	public void updateCountClearTime(Date d) {
		dao.findById(1).setCountClearTime(d);
	}

	public CmsConfig update(CmsConfig bean) {
		Updater<CmsConfig> updater = new Updater<CmsConfig>(bean);
		CmsConfig entity = dao.updateByUpdater(updater);
		entity.blankToNull();
		return entity;
	}

	public MarkConfig updateMarkConfig(MarkConfig mark) {
		get().setMarkConfig(mark);
		return mark;
	}

	public void updateMemberConfig(MemberConfig memberConfig) {
		get().getAttr().putAll(memberConfig.getAttr());
	}

	private CmsConfigDao dao;
	//自动装配dao层
	@Autowired
	public void setDao(CmsConfigDao dao) {
		this.dao = dao;
	}
}

需要@Service@Transactional

注解标志该类为业务逻辑层,所有的service层均采用接口开发模式

@Transactional(readOnly = true)只读事务

配置service bean

context.xml中增加service bean的配置

<bean	id="cmsConfigMng" class="com.jeecms.cms.manager.main.impl.CmsConfigMngImpl"/>

持久层

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操作数据库 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用


DAO类代码编写样例

持久层采用Hibernate3,缓存采用Ehcache

com.dao.main.impl 核心DAO

com.dao.assist.impl 辅助DAO

 
@Repository
public class CmsConfigDaoImpl extends HibernateBaseDao<CmsConfig, Integer>
		implements CmsConfigDao {
	public CmsConfig findById(Integer id) {
		CmsConfig entity = get(id);
		return entity;
	}
	//重写getEntityClass方法
	@Override
	protected Class<CmsConfig> getEntityClass() {
		return CmsConfig.class;
	}
}

@Repository注解标志该类是DAO层组件,可以选择继承HibernateBaseDao基础类,需要实现接口。

配置DAO bean

jeecms-context.xml中增加dao bean的配置

<bean id="cmsConfigDao" class="com.jeecms.cms.dao.main.impl.CmsConfigDaoImpl"/>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值