maven+springMvc+velocity(四)
其实项目框架搭建起来一后,剩余的就是业务逻辑的实现了,非常简单了,简单增删改查代码如下
dao层数据持久层
View Code
/** * @author qizj * @email qizhenj@gmail.com * @create_time 2013-3-14 上午09:27:45 */ package com.myBussiness.persist.user; import java.util.List; import com.myBussiness.domain.user.teacher; public interface TeacherDAO { //在dao层实现teacheer的增删改查 public Integer insertTeacher(teacher teacher); public Integer deleteTeacherById(Integer id); public Integer updateTeacher(teacher teacher); public teacher queryTeacherById(Integer id); //查询所有的teacher信息 public List<teacher> queryAllTeachers(); }
daoImpl的实现层
View Code
/** * @author leiteng * @email qizhenj@gmail.com * @create_time 2013-3-14 上午09:29:54 */ package com.myBussiness.persist.user.impl; import java.util.List; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import org.springframework.stereotype.Component; import com.myBussiness.domain.user.teacher; import com.myBussiness.persist.user.TeacherDAO; @Component("teacherDAO") public class TeacherDAOImpl extends SqlMapClientDaoSupport implements TeacherDAO { // 在DAO根据教师id删除教师信息 public Integer deleteTeacherById(Integer id) { // TODO Auto-generated method stub return (Integer) getSqlMapClientTemplate().delete( "teacherOperation.deleteTeacherById", id); } // 添加教师信息 public Integer insertTeacher(teacher teacher) { // TODO Auto-generated method stub return (Integer) getSqlMapClientTemplate().insert( "teacherOperation.insertTeacher", teacher); } // 根据教师id号查询教师信息 public teacher queryTeacherById(Integer id) { // TODO Auto-generated method stub return (teacher) getSqlMapClientTemplate().queryForObject("teacherOperation.queryDetail", id); } // 根据教师id号更新教师信息 public Integer updateTeacher(teacher teacher) { // TODO Auto-generated method stub return getSqlMapClientTemplate().update("teacherOperation.updateTeacher", teacher); } //查询所有教师信息,以list<teacher>返回 @SuppressWarnings("unchecked") @Override public List<teacher> queryAllTeachers() { // TODO Auto-generated method stub List<teacher> queryForList = getSqlMapClientTemplate().queryForList( "teacherOperation.queryTeacher"); return queryForList; } }
service层
View Code
package com.myBussiness.service.user; import java.util.List; import com.myBussiness.domain.user.teacher; public interface TeacherService { //添加教师信息 public Integer insertTeacher(teacher teacher); //根据id删除教师信息 public Integer deleteTeacherById(Integer idInteger); //更新教师信息 public Integer updateTeacher(teacher teacher); //查看教师具体信息 public teacher queryTeacherById(Integer idInteger); //查询所有教师的信息 public List<teacher> queryAllTeacher(); }
serviceImpl实现
View Code
/** * @author leiteng * @email lvjavapro@163.com * @create_time 2013-3-14 上午08:36:46 */ package com.myBussiness.service.user.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.myBussiness.domain.user.teacher; import com.myBussiness.persist.user.TeacherDAO; import com.myBussiness.service.user.TeacherService; @Service("teacherService") public class TeacherServiceImpl implements TeacherService { @Autowired private TeacherDAO teacherDAO; //在service层根据教师id号删除教师信息 public Integer deleteTeacherById(Integer id) { // TODO Auto-generated method stub return teacherDAO.deleteTeacherById(id); } //根据教师id号查询教师具体信息 public teacher queryTeacherById(Integer idInteger) { // TODO Auto-generated method stub return teacherDAO.queryTeacherById(idInteger); } //添加教师信息 public Integer insertTeacher(teacher teacher) { // TODO Auto-generated method stub return teacherDAO.insertTeacher(teacher); } //根据教师id号更新教师信息 public Integer updateTeacher(teacher teacher) { // TODO Auto-generated method stub return teacherDAO.updateTeacher(teacher); } @Override public List<teacher> queryAllTeacher() { // TODO Auto-generated method stub return (List<teacher>)teacherDAO.queryAllTeachers(); } }
最后就是controller的具体实现了,通过调用相应的接口,将渠道的数据运用各种java代码将其实现不同的包装显示到页面,
Appcontroller.java文件
View Code
/** * @author leiteng * @email lvjavapro@163.com * @create_time 2013-3-14 上午10:32:33 */ package com.myBussiness.front.controller; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.After; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.myBussiness.domain.user.teacher; import com.myBussiness.persist.user.TeacherDAO; import com.myBussiness.persist.user.impl.TeacherDAOImpl; import com.myBussiness.service.user.TeacherService; import com.myBussiness.service.user.impl.TeacherServiceImpl; import com.sun.org.apache.xerces.internal.impl.xpath.regex.Match; /** * * * @author LeiTeng * @date 2013-03-7 * */ @Controller public class AppController{ private String operation; private String message; @Autowired private TeacherService teacherService; @RequestMapping public ModelAndView index(HttpServletRequest request, HttpServletResponse response) { return new ModelAndView("/app/index"); } //添加教师信息 @RequestMapping public ModelAndView register(HttpServletResponse response,HttpServletRequest request, Map<String, Object> out) throws Exception { String teacherName; String adress; String sex; int age; teacherName = request.getParameter("username"); adress = request.getParameter("adress"); age = Integer.parseInt(request.getParameter("age")); sex = request.getParameter("sex"); teacher newteacher = new teacher(teacherName, adress, age,sex); Integer result = teacherService.insertTeacher(newteacher); if (result!=0) { return listTeacher(request, response, out); } else { return new ModelAndView("/app/fail"); } } //查询所有教师信息 @RequestMapping public ModelAndView listTeacher(HttpServletRequest request , HttpServletResponse response,Map<String, Object> out) { @SuppressWarnings("unused") List<teacher> teacherList = teacherService.queryAllTeacher(); // out.put("teacherList", teacherList); /* message="操作成功"; operation="list"; request.setAttribute("message", message); request.setAttribute("operation", operation);*/ request.setAttribute("teacherList", teacherList); return new ModelAndView("/app/listTeacher"); } //根据id号删除教师信息 @RequestMapping public ModelAndView delteTeacher(HttpServletRequest request,HttpServletResponse response,Map<String, Object> out) { Integer id = Integer.parseInt(request.getParameter("teacherId")); Integer result = teacherService.deleteTeacherById(id); operation=request.getParameter("operation"); if (result!=0) { message = "操作成功"; } else { message ="操作失败"; } request.setAttribute("message", message); request.setAttribute("operation", operation); return listTeacher(request, response, out); } //根据教师id号查询教师具体信息 @RequestMapping public ModelAndView queryDetail(HttpServletRequest request,HttpServletResponse response,Map<String, Object> out) { Integer id = Integer.parseInt(request.getParameter("teacherId")); teacher result = teacherService.queryTeacherById(id); request.setAttribute("teacher", result); if (result!=null) { message="操作成功"; } else { message="操作失败"; } request.setAttribute("message", message); operation = (String)request.getParameter("operation"); //因为更新教师信息的时候需要先查询具体的信息,然后根据操作福的不同转向不同的方法,如果是更新操作则进行更新,否则list教师信息 if ("update".equals(operation)) { return new ModelAndView("/app/listTeacher"); //return new ModelAndView("app/updateTeacher"); } request.setAttribute("operation", operation); //return new ModelAndView("/app/queryDetail"); return listTeacher(request, response, out); } //根据id号更新教师信息 @RequestMapping public ModelAndView updateTeacher(HttpServletRequest request, HttpServletResponse response, Map<String, Object> out) { String teacherName; String teacherSex; String teacherAdress; Integer teacherAge; Integer teacherId = Integer.parseInt(request.getParameter("teacherId")); teacherName = request.getParameter("teacherName"); teacherSex = request.getParameter("teacherSex"); teacherAdress =request.getParameter("teacherAdress"); teacherAge = Integer.parseInt(request.getParameter("teacherAge")); teacher teacher = new teacher(teacherName, teacherSex, teacherAge, teacherAdress); teacher.setTeacherId(teacherId); Integer result =teacherService.updateTeacher(teacher); if (result!=0) { message="操作成功"; }else { message="操作失败"; } operation=request.getParameter("operation"); request.setAttribute("operation", operation); request.setAttribute("message", message); return listTeacher(request, response, out); } /* public static void main(String[] args) { teacher newteacher = new teacher("leiteng", "hangzhou", 21,"nan"); TeacherDAOImpl teacherDAOImpl = new TeacherDAOImpl(); teacherDAOImpl.insertTeacher(newteacher); } */ public static void main(String[] args) throws IOException { // InputStream is = new FileInputStream("/usr/limit"); // byte [] buffer = new byte[1024]; // int length = 0; // String limitString = null; // while (-1!=(length=is.read(buffer, 0, 1024))) { // limitString =new String(buffer,0, length); // System.out.println(limitString); // // } // //将从文件中读取到的敏感子转化为数组的形式 // String[] limitArray = limitString.split(","); // String beoperated = "毛主席和蒋介石带领av一起草.你吗的码的的日本人"; // // for (int i = 0; i < limitArray.length; i++) { // Pattern pattern = Pattern.compile(limitArray[i]); // Matcher matcher = pattern.matcher(beoperated); // StringBuffer sbBuffer = new StringBuffer(); // if (matcher.find()) { // matcher.appendReplacement(sbBuffer, "!"); // // } // matcher.appendTail(sbBuffer); // beoperated = sbBuffer.toString(); // System.out.println(i+"-------------------->"+beoperated); // } // System.out.println(beoperated); Integer startInteger ="<p>\n\t </p>\n".length(); String teString = "<p>\n\t </p>\n" + "gsgfl" + "gsfj " + "gaetajwejklsdfjksjdfkjklsjdfjjjjiew" + "sdgfkja g sdgfgadfg\t"; String subString = teString.substring(0,16); if (subString.equals("<p>\n\t </p>\n")) { System.out.println(teString.substring(16, teString.length())); } System.out.println(subString); System.out.println(startInteger); } }
映射等都是通过注解实现的,
最后就是页面的实现了.
index.vm
View Code
#set( $layout = "/layout/blank.vm" ) <head> </head> <body> </body> <form id=registerForm action=register.htm> username:<input id="username" name="username" type="text" /><br> age:<input id="age" name="age" type="text" /><br> sex:<input id="sex" name="sex" type="text" /><br> adress:<input id="adress" name="adress" type="text" /><br> <input type="submit"value="submit"/> <span id="after"></span> </form> </body> <!-- <script type="text/javascript" > function checkRegister(){ alert(adress); var username=document.getElementById("username").value(); var sex = document.getElementById("sex").value(); var age = document .getElementById("age").value(); var adress = document.getelementById("adress").value(); jQuery.ajax({ url:"register.htm", type:"POST", data:{teacherName:username,teacherSex:sex,teacherAge:age,teacherAdress:adress}, success:function(data, textStatus){ var json = eval('('+data+')'); $('#after').html(json.data); } }); } </script> -->
listTeacher.vm
View Code
#set( $layout = "/layout/blank.vm" ) <head> </head> <body> <table width="1069"> <tr align="center"> <td align="center" >$!{operation}</td> <td align="center">$!{message}</td> </tr> </table> <table style="width:1080"> <tr> <td>id</td> <td>姓名</td> <td>性别</td> <td>年龄</td> <td>住址</td> <td align="center" colspan="3">操作</td> </tr> #foreach($teacherList in ${teacherList}) <tr> <td>$teacherList.teacherId</td> <td>$teacherList.teacherName</td> <td>$teacherList.teacherSex</td> <td>$teacherList.teacherAge</td> <td>$teacherList.teacherAdress</td> <td><a href="queryDetail.htm?operation='query'&teacherId=$teacherList.teacherId ">详细信息</a></td> <td><a href="delteTeacher.htm?operation='delete'&teacherId=$teacherList.teacherId ">删除</a></td> <td><a href="queryDetail.htm?operation=update&teacherId=$teacherList.teacherId">更新</a></td> <td><a href="index.htm">添加</a></td> </td> <br> </tr> #end </table> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br> <table width="1322"> <tr align="center"> <td align="center"> id </td> <td align="center"> 姓名 </td> <td align="center"> 性别 </td> <td align="center"> 住址 </td> <td align="center"> 年龄 </td> </tr> <tr align="center"> <td align="center"> $!{teacher.teacherId} </td> <td align="center"> $!teacher.teacherName </td> <td align="center"> $!{teacher.teacherSex} </td> <td align="center"> $!teacher.teacherAdress </td> <td align="center"> $!teacher.teacherAge </td> </tr> </table> #if( ${teacher}) 请修改信息 <form id=registerForm action=updateTeacher.htm?> <input id="operation" name="operation" type="hidden" value=update> <input id="teacherId" name="teacherId" type="hidden" value=${teacher.teacherId}> 姓名:<input id="teacherName" name="teacherName" type="text" value=$teacher.teacherName /><br> 年龄:<input id="teacherAge" name="teacherAge" type="text" value=$teacher.teacherAge /><br> 性别:<input id="teacherSex" name="teacherSex" type="text" value=$teacher.teacherSex /><br> 地址:<input id="teacherAdress" name="teacherAdress" type="text" value=$teacher.teacherAdress /><br> <input type="submit"value="submit"/> <span id="after"></span> </form> #end </body>
queryDetail.vm
View Code
#set( $layout = "/layout/blank.vm" ) <head> </head> <body> $operation $message ${teacher.teacherId} $teacher.teacherName </body>
updateTeacher.vm
View Code
#set( $layout = "/layout/blank.vm" ) <head> </head> <body> </body> 请修改信息 <form id=registerForm action=updateTeacher.htm?> <input id="operation" name="operation" type="hidden" value=update> <input id="teacherId" name="teacherId" type="hidden" value=${teacher.teacherId}> 姓名:<input id="teacherName" name="teacherName" type="text" value=$teacher.teacherName /><br> 年龄:<input id="teacherAge" name="teacherAge" type="text" value=$teacher.teacherAge /><br> 性别:<input id="teacherSex" name="teacherSex" type="text" value=$teacher.teacherSex /><br> 地址:<input id="teacherAdress" name="teacherAdress" type="text" value=$teacher.teacherAdress /><br> <input type="submit"value="submit"/> <span id="after"></span> </form> </body> <!-- <script type="text/javascript" > function checkRegister(){ alert(adress); var username=document.getElementById("username").value(); var sex = document.getElementById("sex").value(); var age = document .getElementById("age").value(); var adress = document.getelementById("adress").value(); jQuery.ajax({ url:"register.htm", type:"POST", data:{teacherName:username,teacherSex:sex,teacherAge:age,teacherAdress:adress}, success:function(data, textStatus){ var json = eval('('+data+')'); $('#after').html(json.data); } }); } </script> -->
然后使用
mvn tomcat:run可以启动tomcat
使用mvnDebug tomcat:run 可以实现debug模式.
另外在父亲项目文件夹下面可建立如下文件方便简化mvn的命令
!/bin/sh #memcached auto-start # # description: Auto-starts memcached # processname: memcached # pidfile: /var/memcached.pid case $1 in p) mvn clean package -Pproduction -Dmaven.test.skip ;; pt) mvn clean package -Ptest -Dmaven.test.skip ;; ci) mvn clean install -Dmaven.test.skip -DdownloadSources=true ;; ee) mvn eclipse:eclipse -Dwtpversion=2.0 -DdownloadSources=true ;; ec) mvn eclipse:clean ;; td) mvnDebug tomcat:run ;; t) mvn tomcat:run ;; s) mvn dependency:sources ;; gb) git branch -av --color ;; *) echo 'p:package -Pproduction; pt:package -Ptest; ci:clean install; ee: eclipse:eclipse' echo 'ec:eclipse:clean; td:debug tomcat:run; t: tomcat:run; s: dependency:sources' ;; esac exit 0 ~ ~
奔跑...