SpringMVC4+spring3+Myibats3
来源:互联网 发布:台湾电视直播软件tv版 编辑:程序博客网 时间:2024/05/15 23:43
简单整合了ssm一下
1.添加jar包 (项目下载地址:http://download.csdn.net/detail/fyhjuyol/8672947)
2.配置 web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>springMVCMyibats</display-name> <!-- 加载Srping配置文件 --><!--[ <context-param></context-param ] =>用来设定web站台的环境参数 * [<param-name></param-name> ] (子元素)=> 用来指定参数的名称 * [<param-value></param-value> ] (子元素)=> 用来设定参数值 从类路径下加载spring的配置文件, 多个配置文件可以用逗号和空格区分 * classpath: 关键字特指类路径下加载 /web-inf/classes/--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-*.xml</param-value></context-param> <context-param><param-name>extremecomponentsPreferencesLocation</param-name><param-value>/extremetable.properties</param-value></context-param><context-param><param-name>extremecomponentsMessagesLocation</param-name><param-value>/extremetableResourceBundle</param-value></context-param><filter> <filter-name>eXtremeExport</filter-name> <filter-class>org.extremecomponents.table.filter.ExportFilter</filter-class> </filter> <filter-mapping> <filter-name>eXtremeExport</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param> <!--不能省略 --><param-name>contextConfigLocation</param-name><param-value>classpath:spring-servlet.xml</param-value></init-param><!--启动时 加载一次 --><load-on-startup>1</load-on-startup></servlet><!--tomcat 的为default weblogic的为FileServlet <servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern></servlet-mapping>--><!-- 请求后缀设为.action 或.do--><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 设置编码格式为UTF8 --><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
3.配置spring spring-config.xml文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><!-- 1. 数据源 : DriverManagerDataSource --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> --> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> <property name="username" value="db_fx" /> <property name="password" value="123456" /> </bean> <!-- 2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源 MyBatis定义数据源,同意加载配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- <property name="configLocation" value="classpath:config/mybatis-config.xml" /> --> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean> <!-- 3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory basePackage:指定sql映射文件/接口所在的包(自动扫描) --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.bea.mapper"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> <!-- 4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 5. 使用声明式事务 transaction-manager:引用上面定义的事务管理器 --> <tx:annotation-driven transaction-manager="txManager" /> </beans>
4.配置springMVC spring-servlet.xml文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 注册aop功能 --><aop:aspectj-autoproxy/><!-- 开启注解 3.06可以不加, 但4.0必须加上--><mvc:annotation-driven /> <!-- 自动扫面com.springmvc目录及其子目录下面所有类文件,自动注入所有带注解的类 --><context:component-scan base-package="com.bea.*" /><!-- 处理请求response返回值,如下配置能正确返回字符串型返回值,如返回值为对象,则自动转为json --><bean id="handleAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 --> <ref bean="mappingStringHttpMessageConverter" /> </list> </property></bean><bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> <bean id="mappingStringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter" /><!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".jsp"></property> <property name="order" value="1"></property></bean><!-- spring文件上传编码 --><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"p:defaultEncoding="utf-8" /><!--配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能<mvc:resources mapping="/img/**" location="/img/" /><mvc:resources mapping="/js/**" location="/js/" /><mvc:resources mapping="/css/**" location="/css/" /><mvc:resources mapping="/html/**" location="/html/" /> --> <!--配置静态资源 与mvc:resources功能相同 --> <mvc:default-servlet-handler/></beans>
5.配置myibats myibats-config.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 实体类,简称 -设置别名 --> <typeAliases> <typeAlias alias="Employe" type="com.bea.model.Employe" /> </typeAliases> <!-- 实体接口映射资源 --> <!-- 说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也可以省略,因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml --> <mappers> <mapper resource="com/bea/mapper/empMapper.xml" /> </mappers> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:必须与对应的接口全类名一致 id:必须与对应接口的某个对应的方法名一致 --> <mapper namespace="com.bea.mapper.EmpMapper"> <insert id="save" parameterType="Employe" > insert into employ (id, name, sex, birthday, photo, age, education, address, remark, email, pwd) values (emp.nextval, #{name}, #{sex}, to_date(#{birthday}, 'yyyy-mm-dd'), #{photo,jdbcType=VARCHAR}, <!-- 防止photo为null 报无效的列类型 Exception--> #{age}, #{education}, #{address}, #{remark}, #{email}, #{pwd}) </insert> <update id="update" parameterType="Employe"> update employ set name =#{name}, sex =#{sex}, birthday = to_date(#{birthday}, 'yyyy-mm-dd'), age =#{age}, education =#{education}, address =#{address}, remark =#{remark}, email =#{email}, pwd =#{pwd}where id=#{id} </update> <delete id="delete" parameterType="int" > delete from employ where id=#{id} </delete> <!-- mybsits_config中配置的alias类别名,也可直接配置resultType为类路劲 字段不一致 可以通过map映射 或查询别名--> <select id="findById" parameterType="int" resultType="Employe"> select id, name, age, sex, education, pwd, remark, photo, to_char(birthday, 'yyyy-mm-dd') birthday from employ where id = #{id} </select> <select id="findAll" resultType="Employe" > select id, name, age, decode(sex,1,'男',2,'女','男') sex, education, to_char(birthday, 'yyyy-mm-dd') birthday from employ </select> </mapper>接口:empMapper.java
public interface EmpMapper {boolean save(Employe employe); //myibats自动添加返回值 boolean update(Employe employe); boolean delete(int id); Employe findById(int id); List<Employe> findAll(); }
6.编写controller类 empAction.java:
package com.bea.action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FilterOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.multipart.commons.CommonsMultipartFile;import org.springframework.web.multipart.commons.CommonsMultipartResolver;import com.bea.model.Employe;import com.bea.service.EmpService;//调试时 修改注解需要重启服务@Controller@RequestMapping("/emp") //@RequestMapping(value="/emp")public class EmpAction { //参数不共享@Autowiredprivate EmpService empService; @RequestMapping("/toList")public String toList(Model model){ List<Employe> list = empService.findAll(); model.addAttribute("list", list);return"jsp/em/tolist";} //url rest风格 ../emp/123@RequestMapping("/{id}")public String toDetail(@PathVariable int id,Model model){ Employeemploy = empService.findById(id); model.addAttribute("employ",employ); return"jsp/em/todetail";}@RequestMapping("/toAdd")public String toAdd(){return"jsp/em/addemp";}@RequestMapping("/NoaddEmp")public String NOaddEmp(@RequestParam("file") CommonsMultipartFile file, Employe employe,HttpServletRequest request) { //不是File fileLong begin = System.currentTimeMillis();String fileUrl = request.getRealPath("/img/photo/")+File.separator+file.getOriginalFilename(); //file.getName() 获取的是file表单 name值 TT..FileOutputStream os=null; //getRealPath("/img/photo/") .../img/photo 对你没看错 不是.../img/photo/InputStream is =null;try {os = new FileOutputStream(fileUrl); //is = new FileInputStream(file);is = file.getInputStream();/* * byte[] buffer =new byte[1024]; int len=0; while((len=is.read(buffer))!=-1){ //读取文件 方法1 os.write(buffer,0,len);} */ int len=0; while((len=is.read())!=-1){ //读取文件2 os.write(len);} os.flush(); is.close(); os.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Long end = System.currentTimeMillis();System.out.println("耗时"+(end-begin)+"ms"); employe.setPhoto("/img/photo/"+file.getOriginalFilename()); boolean bl = empService.save(employe);return"redirect:/emp/toList";}@RequestMapping("/addEmp")public String addEmp(Employe employe,HttpServletRequest request) {String photo ="";Long begin = System.currentTimeMillis();CommonsMultipartResolver cmr = new CommonsMultipartResolver(request.getSession().getServletContext());try {if(cmr.isMultipart(request)){ //判断请求中是否有文件上传MultipartHttpServletRequest msr = (MultipartHttpServletRequest)request;Iterator<String> it = msr.getFileNames();while(it.hasNext()){MultipartFile file = msr.getFile(it.next());if(file!=null){String fileUrl = request.getRealPath("/img/photo/")+File.separator+file.getOriginalFilename(); File localFile = new File(fileUrl);file.transferTo(localFile);photo= "/img/photo/"+file.getOriginalFilename();}}} } catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Long end = System.currentTimeMillis();System.out.println("耗时"+(end-begin)+"ms"); employe.setPhoto(photo); boolean bl = empService.save(employe);return"redirect:/emp/toList";}@RequestMapping("/update/{id}")public String toUpdate(@PathVariable int id, Model model){Employeemploy = empService.findById(id); model.addAttribute("employ",employ); return"jsp/em/updatemp";}@RequestMapping("/updateEmp")public String updateEmp(Employe employe){ boolean bl = empService.update(employe);return"redirect:/emp/toList"; //重定向 to servlet}/* *一般方法 * @RequestMapping("/deleteEmp") public String deleteEmp(int id){empService.delete(id);return"redirect:/emp/toList"; } *//* * @ResponseBody 相当于 response.getWriter().println(...);如果返回值某个实体对象,则会自动转成json返回 必须在配置文件中配置json 转换器@RequestMapping("/deleteEmp")public @ResponseBody Object deleteEmp(int id){boolean flag= empService.delete(id);return flag;} */@RequestMapping("/delete/{id}")public void deleteEmp(@PathVariable int id, HttpServletRequest request,HttpServletResponse response){String result="";PrintWriter out =null;boolean flag= empService.delete(id);if(flag){result="{\"flag\":\"true\"}";}else{result="{\"flag\":\"false\"}";}try {response.setContentType("application/json"); out =response.getWriter();} catch (IOException e) {e.printStackTrace();}finally{out.print(result);out.flush();out.close();}}}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/WEB-INF/extremecomponents.tld" prefix="ec"%><%String path = request.getContextPath()+"/";%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <script type="text/javascript" src="<%=path%>js/jquery-1.7.1.js"></script> <link rel="stylesheet" type="text/css" href="<%=path%>js/ectable/css/td_style_ec.css" /><script language="JavaScript" src="<%=path%>js/ectable/js/eccn.js"></script> <title>用户列表</title> <script type="text/javascript">function del(id){<%-- $.ajax( { type: "post", url : "<%=path%>emp/deleteEmp", data: { id:id }, async: false, dataType: "json", success: function(msg){ if(msg.flag="true"){ $("#"+id).remove(); alert("删除成功!"); }else{ alert("删除失败!"); } } });--%> // dataType 默认为 text //$.post("<%=path%>emp/deleteEmp",{id:id},function(msg,status)$.post("<%=path%>emp/delete/"+id,function(msg,status){ //alert("status>>"+status); if(msg.flag=="true"){ //window.location.reload(); $("#"+id).remove(); alert("删除成功!"); }else{ alert("删除失败!"); }}); }</script> </head> <body> <h6><a href="<%=path%>emp/toAdd">添加用户</a></h6> <table border=0 CellPadding=0 cellSpacing=0 width="88%" align=center><tr><td align="center"><ec:table items="list" var="emp" action="${pageContext.request.contextPath}/emp/toList" width="100%" rowsDisplayed="10" paginationLocation="bottom"showExports="true" filterable="false" sortable="true" showPagination="true" showGotoPage="true" showRowsDisplayed="no"><ec:exportXls fileName="dzqd.xls" tooltip="导出EXCEL"></ec:exportXls><ec:row><ec:column property="id" title="编号" width="12%" style="align:cneter" /><ec:column property="name" title="姓名" width="8%" style="align:cneter" /><ec:column property="age" title="年龄" width="9%" style="align:cneter" /><ec:column property="birthday" title="生日" width="25%" style="align:cneter" /><ec:column property="sex" title="性别" width="8%" style="align:cneter" /><ec:column property="education" title="学历" width="8%" style="align:cneter" /><ec:column property="cz" title="操作" width="8%" style="align:cneter" sortable="false"><a href="<%=path%>emp/update/${emp.id}">编辑</a> <a href="javascript:del(${emp.id})">删除</a></ec:column></ec:row></ec:table></td></tr></table><table border="1"><tbody><tr> <th>编号</th><th>姓名</th><th>年龄</th><th>生日</th><th>性别</th><th>学历</th><th>操作</th></tr> <c:if test="${!empty list}"><c:forEach items="${list}" var="emp"><tr id="${emp.id}"> <%-- <td><a href="<%=path%>emp/toDetail?id=${emp.id}">${emp.id }</a></td> --%> <td><a href="<%=path%>emp/${emp.id}">${emp.id }</a></td><td>${emp.name}</td><td>${emp.age}</td><td>${emp.birthday}</td><td>${emp.sex}</td><td>${emp.education}</td><td><a href="<%=path%>emp/update/${emp.id}">编辑</a><%--<a href="<%=path%>emp/deleteEmp?id=${emp.id}">删除</a> --%> <a href="javascript:del(${emp.id})">删除</a></td></tr></c:forEach></c:if></tbody></table> </body></html>
0 0
- SpringMVC4+spring3+Myibats3
- springMVC4
- spring3
- spring3
- Spring3
- spring3
- spring3
- Spring3
- spring3
- Spring3
- SpringMVC4 配置
- springmvc4文件上传
- springMVC4配置Log4j
- springMVC4使用websocket
- springmvc4 整合 tiles3
- spring4+springmvc4+hibernate4异常
- springmvc4+spring4+hibernate4搭建
- SpringMVC4+Hibernate4学习笔记
- Java并发编程:volatile关键字解析
- onClick、onLongClick事件同时触发
- 用c /c++编写mex 程序并编译MATLAB的Mex文件的方法
- Android中BroadCast与Activity之间的通信
- 递归删除文件或目录
- SpringMVC4+spring3+Myibats3
- 软件测试之-软件缺陷管理
- 信心等于成功
- ora-00844和ora-00851错误,大致是指SGA_MAX_SIZE设置过大
- BlockingQueue
- C++ primer 读书笔记(第5章)语句
- Mac OS 10.10 Sites 创建附带数据库
- Unity存照片
- leetcode-Unique Binary Search Trees: