easyui搭建第三课
2015-06-10 23:59
477 查看
easyui搭建第三课
1.增加jstl的jar包依赖:<!-- 引入jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
2.增加jrebel的使用:jrebel实现项目热部署,
2.1 eclipse下载jrebel部署插件:http://update.zeroturnaround.com/update-site-archive/update-site-6.0.3.RELEASE/
2.2 到官网注册激活:http://www.zeroturnaround.com/,,不过只能激活几天。网上还有各种破解版,请自行学习吧。
2.3 maven中加入jrebel的支持:(经测试发现根本不行。。。)
<!-- jerebel maven 插件,用于生成jrebel.xml --> <plugin> <groupId>org.zeroturnaround</groupId> <artifactId>jrebel-maven-plugin</artifactId> <version>1.1.5</version> <executions> <execution> <id>generate-rebel-xml</id> <phase>process-resources</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <rebelXmlDirectory>${basedir}/src/main/webapp/WEB-INF/classes</rebelXmlDirectory> <!-- 指定生成的jrebel.xml放在哪里, 要求放在web应用的 classpath下 --> </configuration> </plugin>
3.重构之前的登录注册页面:
3.1 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html > <html> <title>首页</title> <script type="text/javascript" src="jslib/jquery-easyui-1.4.2/jquery.min.js"></script> <script type="text/javascript" src="jslib/jquery-easyui-1.4.2/jquery.easyui.min.js"></script> <script type="text/javascript" src="jslib/jquery-easyui-1.4.2/locale/easyui-lang-zh_CN.js"></script> <script type="text/javascript" src="jslib/syExtEasyUI.js"></script> <link rel="stylesheet" href="jslib/jquery-easyui-1.4.2/themes/default/easyui.css" type="text/css"></link> <link rel="stylesheet" href="jslib/jquery-easyui-1.4.2/themes/icon.css" type="text/css"></link> <script type="text/javascript"> </script> <body class="easyui-layout"> <div data-options="region:'north',title:'欢迎访问该系统',split:true" style="height: 100px;"></div> <div data-options="region:'south',split:true" style="height: 25px;"></div> <div data-options="region:'east',title:'East',split:true" style="width: 100px;"></div> <div data-options="region:'west',split:true" style="width: 100px;"> <div class="easyui-panel" data-options="title:'luckyssmm系统',border:false, fit:true"></div> </div> <div data-options="region:'center',title:'center title'" style="padding: 5px; background: #eee;"></div> <jsp:include page="user/login.jsp"></jsp:include> <jsp:include page="user/reg.jsp"></jsp:include> </body> </html>
3.2 user/login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <script type="text/javascript"> $(function() { $('#user_reg_loginDialog').dialog({ title : '登录', modal : true, closable : false, buttons : [ { text : '注册', iconCls : 'icon-edit', handler : function() { $('#user_reg_regForm input').val(''); $('#user_reg_regDialog').dialog('open'); } }, { text : '登录', iconCls : 'icon-help', handler : function() { var result1 = { 'name' : 'jack', 'age' : '23', 'work' : 'IT' }; var r = eval(result1); console.info(r); } } ] }); }); </script> <div id="user_reg_loginDialog" class="easyui-dialog"> <table> <tr> <th>登录名</th> <td><input></td> </tr> <tr> <th>密码</th> <td><input></td> </tr> </table> </div>
3.3 user/reg.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <script type="text/javascript"> $(function() { $('#user_reg_regDialog').dialog({ title : '登录', modal : true, // closed : true, buttons : [ { text : '注册', iconCls : 'icon-edit', handler : function() { regUser(); } } ] }).dialog('close'); }); function regUser() { if ($('#user_reg_regForm').form('validate')) { $.ajax({ url : '${pageContext.request.contextPath}/userController/reg.do', data : $('#user_reg_regForm').serialize(), dataType : 'json', success : function(data, textStatus, jqXHR) { var $data = data;//$.parseJSON(data); console.info($data.success); console.info($data.message); if ($data.success) { $('#user_reg_regDialog').dialog('close'); } $.messager.show({ title : '提示', msg : $data.message, timeout : 5000, showType : 'slide' }); } }); } } </script> <div id="user_reg_regDialog"> <form id="user_reg_regForm" method="post"> <table> <tr> <th>登录名</th> <td><input name="name" class="easyui-validatebox" data-options="required:true,missingMessage:'*登录名称必填'"></td> </tr> <tr> <th>密码</th> <td><input id="pwd" name="pwd" type="password" class="easyui-validatebox" data-options="required:true"></td> </tr> <tr> <th>重复密码</th> <td><input id="rpwd" name="rpwd" type="password" class="easyui-validatebox" data-options="required:true, validType:'eqPwd[\'#pwd\']'"></td> </tr> </table> </form> </div>
4.重写controller层。
4.1 抽象出一个父类controller...
实现公用的方法等,,,暂时将JSON回写抽出,,其他后续完成。。
package lucky.ssmm.common.controller; import com.alibaba.fastjson.JSON; public class BaseController { public String writeJson(Object object) { String json = JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm:ss"); return json; } }
4.2 controller层前台参数接入实现方法:
4.2.1 通过request实现:
@RequestMapping(value = "/reg", method = { RequestMethod.POST, RequestMethod.GET }) @ResponseBody public String reg(HttpServletRequest request, HttpServletResponse response) { String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); Map<String, Object> result = new HashMap<String, Object>(); User user = new User(); user.setId(UUID.randomUUID().toString()); user.setName(name); user.setLoginName(name); user.setPassword(pwd); try { // userService.insert(user); result.put("success", true); result.put("message", "注册成功!"); } catch (Exception e) { e.printStackTrace(); logger.info("注册失败" + e.getMessage()); result.put("success", false); result.put("message", "注册失败!"); } request.setAttribute("user", user); logger.info(writeJson(user)); return writeJson(result); }4.2.2 Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和Struts2一样
注;// 表单属性是pwd,用变量password接收
@RequestMapping(value = "/reg", method = { RequestMethod.POST, RequestMethod.GET }) @ResponseBody public String reg(String name, @RequestParam("pwd") String password, HttpServletRequest request, HttpServletResponse response) { Map<String, Object> result = new HashMap<String, Object>(); User user = new User(); user.setId(UUID.randomUUID().toString()); user.setName(name); user.setLoginName(name); user.setPassword(password); try { // userService.insert(user); result.put("success", true); result.put("message", "注册成功!"); } catch (Exception e) { e.printStackTrace(); logger.info("注册失败" + e.getMessage()); result.put("success", false); result.put("message", "注册失败!"); } request.setAttribute("user", user); logger.info(writeJson(user)); return writeJson(result); } }
4.2.3自动注入Bean属性
如下User为Mybatis自动生成的实体类。。
@RequestMapping(value = "/reg", method = { RequestMethod.POST, RequestMethod.GET }) @ResponseBody public String reg(User user, HttpServletRequest request, HttpServletResponse response) { Map<String, Object> result = new HashMap<String, Object>(); User cuser = new User(); cuser.setId(UUID.randomUUID().toString()); cuser.setName(user.getName()); cuser.setLoginName(user.getName()); cuser.setPassword(user.getPassword()); try { // userService.insert(cuser); result.put("success", true); result.put("message", "注册成功!"); } catch (Exception e) { e.printStackTrace(); logger.info("注册失败" + e.getMessage()); result.put("success", false); result.put("message", "注册失败!"); } request.setAttribute("user", user); logger.info(writeJson(user)); return writeJson(result); }
4.3 向页面传值:该部分参考:(点击打开链接)
当Controller组件处理后,向jsp页面传值,
1,使用HttpServletRequest 和 Session 然后setAttribute(),就和Servlet中一样
2,使用ModelAndView对象
3,使用ModelMap对象
4,使用@ModelAttribute注解
Model数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do") public ModelAndView login(String name,String pass){ User user = userService.login(name,pwd); Map<String,Object> data = new HashMap<String,Object>(); data.put("user",user); return new ModelAndView("success",data); }
使用ModelMap参数对象示例:
ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do") public String login(String name,String pass ,ModelMap model){ User user = userService.login(name,pwd); model.addAttribute("user",user); model.put("name",name); return "success"; }
使用@ModelAttribute示例
在Controller方法的参数部分或Bean属性方法上使用
@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do") public String login(@ModelAttribute("user") User user){ //TODO return "success"; } @ModelAttribute("name") public String getName(){ return name; }
Session存储:
可以利用HttpServletReequest的getSession()方法
@RequestMapping("/login.do") public String login(String name,String pwd ModelMap model,HttpServletRequest request){ User user = serService.login(name,pwd); HttpSession session = request.getSession(); session.setAttribute("user",user); model.addAttribute("user",user); return "success"; }
Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作
1,使用RedirectView
2,使用redirect:前缀
public ModelAndView login(){ RedirectView view = new RedirectView("regirst.do"); return new ModelAndView(view); }
或者用如下方法,工作中常用的方法:
public String login(){ //TODO return "redirect:regirst.do"; }
相关文章推荐
- String、StringBuffer、StringBuilder之间的区别-整理中
- UGUI 实现Button长按效果(RepeatButton)
- 08_ui_传值
- Exchange 2010 DNS query fail 问题
- Java.lang.StringBuilder类
- DUILIB入门简明教程
- 50款强力jquey,js 插件推荐
- verilog调试--- $test$plusargs和$value$plusargs的用法
- DUILIB创建不规则窗体
- Queue And ConcurrentQueue in .NET
- duilib库的点九技术
- OC学习之道:UIImagePickerController的使用,使用UIImagePickerController调用本地摄像头,本地相册
- 单例模式:单例类的标准写法 - iOS - UI基础知识总结13
- UITableViewCellSeparatorStyleNone去掉分割线
- uitableview持续练习
- 关于druid数据连接池抛出的 connection holder is null 异常
- UIViewController中的viewDidLoad实现和调用
- 【源代码】StringBuilder和StringBuffer震源深度分析
- ios UITableView separatorColor 默认颜色
- 关于UItextView 的一些应用和将uitableview滚动到对应的位置