刚刚接触JEECG,了解的大概,但是还没有真正的使用!
今天就从单表哦模型开始学习吧!系统初始化以及系统登录在此就先不说了,在JEECG帮助文档中写的很详细了,我用的是Oracle数据库。
登录系统后:如下界面
用的版本是JEECG_v3.1版本
点击单表模型会进入单表模型数据列表页面。
这个功能页面设计到哪些页面,Bean类以及配置文件呢,并且在增删改查的操作的时候请求是怎么执行的呢,我觉得明白这些后就会很容易的操作JEECG了。
首先要知道JEECG_3.1使用的框架是:Spring MVC+Hibernate4+UI快速开发库+Spring JDBC+Highcharts图形报
- 涉及到哪些文件呢?(实际上操作的是人员信息,但是用的是Note(公告)关键词,这倒是不影响我们理解)
- WebRoot/webpage/jeecg/demo/test/jeecgNote.jsp --这是Form页面,添加页面与修改页面是同一个页面
- WebRoot/webpage/jeecg/demo/test/jeecgNoteList.jsp --这是List页面
- src/jeecg/demo/controller/test/jeecgNoteController.java --这是业务处理及转发的C层,主要的业务处理在此
- src/jeecg/demo/entity/test/jeecgNoteEntity.java ---这是Entity类
- src/jeecg/demo/service/test/JeecgNoteServiceI.java --这是Sercice的接口类
- ser/jeecg/demo/service/impl/test/JeecgNoteServeceImpI.java --这是实现了serviceI的接口类
- WEB-INF/web.xml --这里配置了servlet
- src/resources/spring-mvc.xml
2.添加操作:
操作页面
那么怎么跳转到这个页面的呢?
那首先要看看点击录入按钮,做了什么事情
看一下List页面,录入按钮代码:
<t:dgToolBar title="录入" icon="icon-add" url="jeecgNoteController.do?addorupdate" funname="add" operationCode="add"></t:dgToolBar>
看到url的值是"jeecgNoteController.do?addorupdate"
什么意思呢?
jeecgNoteController.do通过web.xml的servlet转发到注解了
@Controller
@RequestMapping("/jeecgNoteController")
的Controller类
addorupdate的意思是传递一个参数,值为addorupdate,就会执行该Controller类的被@RequestMapping(params = "addorupdate")注解的方法。
Controller类的代码如下:
package jeecg.demo.controller.test;
import java.util.List;
略..
/**
* @Title: Controller
* @Description: 公告
* @author zhangdaihao
* @date 2013-03-12 14:06:34
* @version V1.0
*
*/
@Controller
@RequestMapping("/jeecgNoteController")
public class JeecgNoteController extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(JeecgNoteController.class);
@Autowired
private JeecgNoteServiceI jeecgNoteService;
@Autowired
private SystemService systemService;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
* 公告列表 页面跳转
*
* @return
*/
@RequestMapping(params = "jeecgNote")
public ModelAndView jeecgNote(HttpServletRequest request) {
return new ModelAndView("jeecg/demo/test/jeecgNoteList");
}
/**
* easyui AJAX请求数据
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(JeecgNoteEntity jeecgNote,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(JeecgNoteEntity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jeecgNote);
this.jeecgNoteService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
* 删除公告
*
* @return
*/
@RequestMapping(params = "del")
@ResponseBody
public AjaxJson del(JeecgNoteEntity jeecgNote, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
jeecgNote = systemService.getEntity(JeecgNoteEntity.class, jeecgNote.getId());
message = "删除成功";
jeecgNoteService.delete(jeecgNote);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
j.setMsg(message);
return j;
}
/**
* 添加公告
*
* @param ids
* @return
*/
@RequestMapping(params = "save")
@ResponseBody
public AjaxJson save(JeecgNoteEntity jeecgNote, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
if (StringUtil.isNotEmpty(jeecgNote.getId())) {
message = "更新成功";
jeecgNoteService.saveOrUpdate(jeecgNote);
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
} else {
message = "添加成功";
jeecgNoteService.save(jeecgNote);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
}
return j;
}
/**
* 公告列表页面跳转
*
* @return
*/
@RequestMapping(params = "addorupdate")
public ModelAndView addorupdate(JeecgNoteEntity jeecgNote, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jeecgNote.getId())) {
jeecgNote = jeecgNoteService.getEntity(JeecgNoteEntity.class, jeecgNote.getId());
req.setAttribute("jeecgNotePage", jeecgNote);
}
return new ModelAndView("jeecg/demo/test/jeecgNote");
}
}
其实,点击录入和编辑都会执行该方法,如果是录入,那么就会展示一个空的页面,如果是编辑,那么就会从数据库中取得相应数据得到对象后放到request中返回到页面。
在页面中的对象变量为 :jeecgNotePage
该方法返回一个ModelAndView对象,这就涉及到Spring配置了,返回该对象的意思指的是要返回到jeecg/demo/test/jeecgNot.jsp页面
那么他的全路径是什么呢,那么就要参照resources/spring-mvc.xml
<!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="3">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="contentType" value="text/html" />
<property name="prefix" value="/webpage/" />
<property name="suffix" value=".jsp" />
</bean>
prefix表示定位到/webpage/目录下,所以返回页面的全路径是/webpage/jeecg/demo/test/jeecgNot.jsp,就到了我们见到的这个页面了。
那么录入完信息后,我们点击确定的时候又会进行哪些操作呢。
看一下点击确定按钮的时候的form跳转:
<t:formvalid formid="formobj" dialog="true" usePlugin="password" layout="table" action="jeecgNoteController.do?save">
如以上解析,那么会找到被注解为jeecgNoteController的类中的并且注解参数为save的方法
/**
* 添加公告
*
* @param ids
* @return
*/
@RequestMapping(params = "save")
@ResponseBody
public AjaxJson save(JeecgNoteEntity jeecgNote, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
if (StringUtil.isNotEmpty(jeecgNote.getId())) {
message = "更新成功";
jeecgNoteService.saveOrUpdate(jeecgNote);
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
} else {
message = "添加成功";
jeecgNoteService.save(jeecgNote);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
}
return j;
}