手把手使用springmvc_第1页
手把手使用springmvc_第2页
手把手使用springmvc_第3页
手把手使用springmvc_第4页
手把手使用springmvc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

手把手使用springmvc本文主要通过实例介绍怎么从新建工程通过配置,一步一步实现使用spirngmvc建立工程,实现基本的增删查改数据库等功能。一、新建工程1.打开myeclipse新建Web Project点击next输入工程名TestWeb这里自己命名点击finish完成。新建工程出现在右侧工程区域,这里jre最好是5.0以上,本例中使用的是6.0二、工程配置1.相关jar包下载相关spring的包以及其他依赖jar包,拷贝到web-inf/lib下Spring相关的jar包,本例使用3.0.6版本,数据库使用mysql其他工具和依赖包2.配置applicationContext.xml文件文件内容如下:数据库使用mysql,如果使用其他数据库可更换驱动driverClassName以及url的值,本例连接的地址为本机,端口为3306,库名为reports。其中DbExecuter使用jdbcTemplate操作数据库,DbExecuter可改为自己的数据库处理类,本例未使用Mybatis。切面示例使用aopLog,为com.zkxx.reportforms.demo.action包下的所有类方法,若有不同可更换切入点表达式pointcut=execution,切入方式为环绕around,也可以更改为after,before。 3.配置web.xml文件配置web-inf下的web.xml文件,文件内容如下:其中springmvc拦截.do的请求,这里可以根据自己的需求修改。 index.jsp contextConfigLocationclasspath:applicationContext.xml org.springframework.web.context.ContextLoaderListenerorg.springframework.web.util.IntrospectorCleanupListener springmvc org.springframework.web.servlet.DispatcherServlet 1 springmvc *.do 4.配置springmvc-servlet.xml文件内容如下:利用拦截器处理用户管理session是否存在,其中list的值不在拦截的范围。文件上传的大小可以调节。 /manager/session /manager/login /error /pages/ .jsp 三、工程实例开始1.拦截器实现代码如下:对应springmvc-servlet.xml里的 包名可自定义package com.zkxx.ann;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class SecurityInterceptor implements HandlerInterceptor private List excludedUrls; public void setExcludedUrls(List excludedUrls) this.excludedUrls = excludedUrls; Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception / 判断是否是需要拦截的URI,如果是不需要拦截的返回TRUE。 String requestUri = request.getRequestURI(); System.out.println(requestUri=+requestUri); for (String url : excludedUrls) if (requestUri.endsWith(url+.do) return true; / 获取sessionHttpSession session = request.getSession();/ 获取session如果为空,跳转到相关处理页面。 if (session.getAttribute(user) = null) request.getRequestDispatcher(/manager/session.do).forward(request, response); return false; / throw new Exception(); else return true; Overridepublic void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception / TODO Auto-generated method stub/可自行添加处理方法System.out.println(afterCompletion);Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception / TODO Auto-generated method stub/可自行添加处理方法System.out.println(postHandle);2.Aop日志的实现代码如下:对应applicationContext.xml文件里的package com.zkxx.ann;import org.aspectj.lang.ProceedingJoinPoint;public class AopLog public Object runOnAround(ProceedingJoinPoint point) throws Throwable System.out.println(开始 around日志); Object parames = point.getArgs();/获取目标方法体参数 System.out.println(point.getTarget().getClass().getName(); for(int i=0;parames!=null&iparames.length;i+) System.out.println(parames+i+=+paramesi); /可添加写日志的方法 Object object = ceed(parames); /可添加写日志的方法 System.out.println(结束 around日志); return object; 3.数据库操作的实现代码如下:对应applicationContext.xml文件里的package com.zkxx.db;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.List;import java.util.Map;import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.PreparedStatementCreator;public class DbExecuter private static DbExecuter instance=null; private JdbcTemplate springjdbc; private DbExecuter() public static DbExecuter getInstance() if(instance=null) instance=new DbExecuter(); return instance; public void setSpringjdbc(JdbcTemplate springjdbc) this.springjdbc = springjdbc;System.out.println(springjdbc=+springjdbc); public JdbcTemplate getSpringjdbc() return springjdbc; public List query(String sql,Object arr) ListMap list=springjdbc.query(sql, arr, new ItemMapper(); return list; public List query(String sql,Class cls, Object arr) List list=springjdbc.query(sql,arr,BeanPropertyRowMapper.newInstance(cls);/queryForList(sql, cls, arr); return list; public int execute(String sql,Object arr) final String sqlstr=sql; final Object paras=arr; int jg=-1; jg=getSpringjdbc().update(new PreparedStatementCreator() public PreparedStatement createPreparedStatement(Connection con) throws SQLException PreparedStatement ps = con.prepareStatement(sqlstr); for(int j=0;jparas.length;j+) Object str= parasj; ps.setObject(j+1, str); return ps; ); return jg; 4.一个简单的保存查询在上面的基本准备工作完成后,我们来写一个简单的保存查询功能目录结构如下(1)Src类页面(2)页面元素说明,两张表,一张主表,一张明细表对应的bo分别为NsrxxBo和MxBo页面端组织数据成json格式var jsonstr=nsrsbh:1122,nsrmc:33,dz:测试,dh:111,je:100,se:20,bz:,mxlist:xmje:50,xmse:10,xmje:50,xmse:10其中注意contentType为application/json,这样springmvc会自动对json进行解析填充对应的bo类,返回也为相应的json格式数据。保存:var sbh=1122;$.ajax(url : /TestWeb/djxx/nsrxx.do,dataType : json, contentType:application/json,data : jsonstr,type : post,async : true,success : function(data) alert(succ=+JSON.stringify(data);if (data.fhjg = 0) $.messager.alert(消息, 成功!, info, function() ); else $.messager.alert(消息, data.fhsm, error);,error : function() $.messager.alert(消息, data.fhsm, error););查询:$.ajax(url : /TestWeb/djxx/cxxx.do?nsrsbh=+sbh,dataType : json, contentType:application/json,type : post,async : true,success : function(data) alert(succ=+JSON.stringify(data);if (data.fhjg = 0) $.messager.alert(消息, 成功!, info, function() ); else $.messager.alert(消息, data.fhsm, error);,error : function() $.messager.alert(消息, data.fhsm, error););(3)对应的NsrxxBo代码package com.zkxx.reportforms.demo.bo;import java.io.Serializable;import java.util.List;public class NsrxxBo implements Serializablepublic String getNsrsbh() return nsrsbh;public void setNsrsbh(String nsrsbh) this.nsrsbh = nsrsbh.trim();public String getNsrmc() return nsrmc.trim();public void setNsrmc(String nsrmc) this.nsrmc = nsrmc;public String getDz() return dz;public void setDz(String dz) this.dz = dz;public String getDh() return dh;public void setDh(String dh) this.dh = dh;public String getBz() return bz;public void setBz(String bz) this.bz = bz;public String getYwlxdm() return ywlxdm;public void setYwlxdm(String ywlxdm) this.ywlxdm = ywlxdm;public double getJe() return je;public void setJe(double je) this.je = je;public double getSe() return se;public void setSe(double se) this.se = se;String ywlxdm=;String nsrsbh=;String nsrmc=;String dz=;String dh=;String bz=;double je=0.0;double se=0.0;List mxlist;public List getMxlist() return mxlist;public void setMxlist(List mxlist) this.mxlist = mxlist; (4)对应的MxBo代码package com.zkxx.reportforms.demo.bo;import java.io.Serializable;public class MxBo implements SerializableString nsrsbh=;String nsrmc=;double xmje=0.0;double xmse=0.0;double xmsl=0.0;public String getNsrsbh() return nsrsbh;public void setNsrsbh(String nsrsbh) this.nsrsbh = nsrsbh;public String getNsrmc() return nsrmc;public void setNsrmc(String nsrmc) this.nsrmc = nsrmc;public double getXmje() return xmje;public void setXmje(double xmje) this.xmje = xmje;public double getXmse() return xmse;public void setXmse(double xmse) this.xmse = xmse;public double getXmsl() return xmsl;public void setXmsl(double xmsl) this.xmsl = xmsl;(5)Control代码以下代码我们看到方法ResultMsg addNsrxx(RequestBody NsrxxBo nsrxxbo)对应ajax的请求通过RequestBody NsrxxBo将提交的json转成对应的bo类,我们可以直接方便的使用bo进行操作package com.zkxx.reportforms.demo.action;import java.util.HashMap;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.zkxx.base.SpringContextUtil;import com.zkxx.base.ResultMsg;import com.zkxx.reportforms.demo.bo.MxBo;import com.zkxx.reportforms.demo.bo.NsrxxBo;import com.zkxx.reportforms.demo.service.DjnsrxxService;Controllerpublic class DjNsrxxAction private DjnsrxxService djnsrxxService;public DjnsrxxService getDjnsrxxService() return this.djnsrxxService;Autowired/自动注入servicepublic void setDjnsrxxService(DjnsrxxService djnsrxxService)this.djnsrxxService=djnsrxxService;RequestMapping(djxx/nsrxx)/对应ajax请求的urlpublic ResponseBodyResultMsg addNsrxx(RequestBody NsrxxBo nsrxxbo) throws Exception ResultMsg ret;tryret=getDjnsrxxService().saveInfo(nsrxxbo);catch(Exception e)ret=new ResultMsg();ret.setFhjg(-1);ret.setFhsm(保存失败);e.printStackTrace();return ret;RequestMapping(djxx/cxxx)public ResponseBodyResultMsg queryNsrxxByNsrsbh(RequestParam(nsrsbh) String nsrsbh) throws Exception System.out.println(nsrsbh);System.out.println(query);ResultMsg result=getDjnsrxxService().getInfoBysbh(nsrsbh);System.out.println(result.getRows().toString();return result;(6)Service接口package com.zkxx.reportforms.demo.service;import com.zkxx.base.ResultMsg;import com.zkxx.reportforms.demo.bo.NsrxxBo;public interface DjnsrxxService ResultMsg saveInfo(NsrxxBo bo) throws Exception;ResultMsg getInfoBysbh(String sbh);(7)Service接口实现主要对数据库的操作不再累述package com.zkxx.reportforms.demo.service.impl;import java.util.List;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.zkxx.base.ResultMsg;import com.zkxx.db.DbExecuter;import com.zkxx.reportforms.demo.bo.MxBo;import com.zkxx.reportforms.demo.bo.NsrxxBo;import com.zkxx.reportforms.demo.service.DjnsrxxService;ServiceTransactionalpublic class DjnsrxxServiceImpl implements DjnsrxxServicepublic ResultMsg getInfoBysbh(String sbh) / TODO Auto-generated method stubString sql=select * from dj_nsrxx where nsrsbh=?;Object arr=sbh;List list=DbExecuter.getInstance().query(sql, NsrxxBo.class, arr);for(NsrxxBo bo:list)String nsrsbh=bo.getNsrsbh();Object arrmx=nsrsbh;sql=select * from dj_nsrxx_mx where nsrsbh=?;List listmx=DbExecu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论