关于SSM框架搭建以及简单的增删改查
来源:互联网 发布:全球经济数据库 市盈率 编辑:程序博客网 时间:2024/05/18 01:30
第一步.Maven框架的搭建
这个很简单,按照网上的搭建步骤进行搭建就能顺利的进行了,可以参考这位博主的文章进行搭建 http://www.cnblogs.com/Sinte-Beuve/p/5730553.html
第二步.搭建完Maven后,我们来进行ssm框架的xml文件配置
1.首先进行spring mvc xml 文件的配置
我把spring mvc 文件放在了WEB-INF文件夹下面新建的一个configs文件夹下面
下面是xml内容
然后我们需要在web.xml中声明spring mvc 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:context="http://www.springframework.org/schema/context" 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.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--启用spring的一些annotation --> <context:annotation-config/> <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <context:component-scan base-package="com.frank.controller"> <!-- 扫描符合@Service @Repository的类 --> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--HandlerMapping 无需配置,springmvc可以默认启动--> <!--但是项目部署到linux下发现WEB-INF的静态资源会出现无法解析的情况,但是本地tomcat访问正常,因此建议还是直接把静态资源放在webapp的statics下,映射配置如下--> <!--<mvc:resources mapping="/css/**" location="/statics/css/"/>--> <!--<mvc:resources mapping="/js/**" location="/statics/js/"/>--> <!--<mvc:resources mapping="/image/**" location="/statics/images/"/>--> <!-- 配置注解驱动 可以将request参数与绑定到controller参数上 --> <mvc:annotation-driven/> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP--> <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- --> <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/views/"/><!--设置JSP文件的目录位置--> <property name="suffix" value=".jsp"/> </bean> <!--springmvc文件上传需要配置的节点--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="20971500"/> <property name="defaultEncoding" value="UTF-8"/> <property name="resolveLazily" value="true"/><!-- 是否使用延迟加载--> </bean></beans>
<!--配置springmvc DispatcherServlet--> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!--Sources标注的文件夹下需要新建一个spring文件夹--> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/configs/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2.进行spring mybatis 的配置在main resources下新建 jdbc.properties 和 log4j.properties 代码如下
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=你的密码
#配置根Logger 后面是若干个Appenderlog4j.rootLogger=DEBUG,A1,R#log4j.rootLogger=INFO,A1,R# ConsoleAppender 输出log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n# File 输出 一天一个文件,输出路径可以定制,一般在根路径下log4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File=logs/log.txt//log日志文件存储位置log4j.appender.R.MaxFileSize=500KBlog4j.appender.R.MaxBackupIndex=10log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
然后在resource下新建 applicationContext.xml 进行spring mybatis 整合配置
下面是我的spring 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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd " > <!--1.1 引用注解--> <context:component-scan base-package="com.frank"/> <!--1.1 关联jdbc.properties--> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 01.配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mapping/*.xml"></property> </bean> <!-- 03.生成dao代理對象-->//这里没有配置好的话注解找不到对象 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> <property name="basePackage" value="com.frank.dao"></property> </bean> </beans>
xml配置完成后 在web.xml 进行相同的文件声明
<!--配置Spring--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
<!-- 注册ServletContext监听器,创建容器对象,并且将ApplicationContext对象放到Application域中 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止spring内存溢出监听器,比如quartz --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener>
配置完成后 ,我们的ssm框架算是已经稍微成型了
第三步 搭建mapper 映射
首先创建实体类 User
public class User { private int userID; private String userName; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getUserID() { return userID; } public void setUserID(int userID) { this.userID = userID; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; }}
package com.frank.dao;import com.frank.bean.User;import org.mybatis.spring.annotation.MapperScan;import org.springframework.stereotype.Component;import org.springframework.stereotype.Repository;import java.util.List;@Repository<!--这里使用注解-->public interface UserMapper { public void save(User user); public void update(User user); public User findById(int id); public List<User> findAll(); public void deleteById(int id);}
我认为ssm 利用mapper 省去了 物理实现层的接口类 而是在mapping中直接进行数据库操作,这样更加的简便了(个人观点)我们在resources文件夹下新建mapping文件夹 ,里面创建我们的UserMapper
这里就包含了用户的增删改查的数据库操作,需要注意的是,在进行用户列表显示时,需要用到ResultMap,需要对里面的对象进行声明,如下 property代表实体类的属性名
而 column显而易见代表的是数据库的列名
下面select等语句中的id代表dao类中的方法名称
<?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:必须与对应的接口全类名一致 UserMapper.java id :必须与对应接口的某个对应的方法名一致即必须要和UserMapper.java接口中的方法同名。 --><mapper namespace="com.frank.dao.UserMapper"> <resultMap id="StudentList" type="com.frank.bean.User"> <id property="userID" column="userID"/> <result property="userName" column="userName"/> <result property="password" column="password"/> </resultMap> <insert id="save" parameterType="com.frank.bean.User"> INSERT into user(userName,passWord) VALUES (#{userName},#{password}) </insert> <update id="update" parameterType="com.frank.bean.User"> UPDATE user SET userName=#{userName},passWord=#{password} where userID=#{userID} </update> <select id="findByID" parameterType="int" resultType="com.frank.bean.User"> SELECT * FROM user WHERE userID=#{id} </select><select id="findAll" resultMap="StudentList"> SELECT * from user</select> <delete id="deleteById" parameterType="int"> DELETE FROM USER WHERE userID=#{id} </delete></mapper>
这样我们的dao层已经算是写完了,下面是service层
package com.frank.service;import com.frank.bean.User;import com.frank.dao.UserMapper;import org.springframework.beans.factory.annotation.Autowired;import java.util.List;public interface UserService { public void save(User user); public void update(User user); public User findById(int id); public List<User> findAll(); public void deleteById(int id);}
package com.frank.servicelmpl;import com.frank.bean.User;import com.frank.dao.UserMapper;import com.frank.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class UserServicelmpl implements UserService { @Autowired() private UserMapper userMapper; public void save(User user) {userMapper.save(user); } public void update(User user) {userMapper.update(user); } public User findById(int id) { return userMapper.findById(id); } public List<User> findAll() { return userMapper.findAll(); } public void deleteById(int id) { userMapper.deleteById(id); }}
第四步 Controller层进行url管理
我的controller类
package com.frank.controller;import com.frank.bean.User;import com.frank.service.UserService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;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.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import java.util.List;@Controller@RequestMapping("/user")public class UserController { @Autowired private UserService userService; private static final Logger logger= LoggerFactory.getLogger(UserController.class); @RequestMapping("/person") public String getPage(){ return "/user/add"; } @RequestMapping(value = "/add",method = RequestMethod.POST) public String addUser(@RequestParam("username") String username, @RequestParam("pwd") String pwd, Model model) { User user=new User(); user.setUserName(username); user.setPassword(pwd); logger.info(username+"!!!!!!!!!"); userService.save(user); return "redirect:/user/list"; } @RequestMapping("/list")public String getList(Model model){ List<User> list=userService.findAll(); if(list!=null){ logger.info("list has been filled"); logger.info(list.get(0).getUserName()); } else logger.info("list is null"); model.addAttribute("list",list); return "/user/userList"; } @RequestMapping("/delete/{id}") public String doDelete(@PathVariable("id") Integer id){userService.deleteById(id);logger.info("this user has been deleted");return "redirect:/user/list"; }}
1.展示用户列表
jsp代码
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title></head><body><table style="margin: auto;"> <tr> <td>ID</td> <td>userName</td> <td>password</td> </tr> <c:forEach items="${list}" var="user"><tr> <td>${user.userID}</td> <td>${user.userName}</td> <td>${user.password}</td> <td><a href="/user/edit/${user.userID}">编辑</a></td>//这个就不写啦,思路都一样的 <td><a href="/user/delete/${user.userID}">删除</a></td></tr> </c:forEach></table></body></html>
2.添加用户
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title></head><body><form action="/user/add" method="post"> username:<input type="text" name="username"/><br> password:<input type="password" name="pwd"/><br> <input type="submit" value="click"/></form></body></html>
添加完成后 通过redirect 重定向 跳转到list页面
3.删除操作删除第二个用户后重定向跳转页面
本人也是刚学习ssm,只是对自己的代码认识做了一个总结,有不对的地方希望大家能一起交流,谢谢。
顺便把我使用的dependecy 发给大家
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope></dependency><!--日志包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> </dependency> <!--j2ee相关包 servlet、jsp、jstl--><dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version></dependency><dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version></dependency><dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version></dependency><!--mysql驱动包--><dependency> <groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 --><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version></dependency><!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --><dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version></dependency><!--spring相关包--><!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-aop --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.7.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.7.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.7.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.7.RELEASE</version></dependency><!--myBatis--><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version></dependency><!--其他需要的包--><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version></dependency><dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency><!-- json--><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version></dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version></dependency><dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.13</version></dependency><dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version></dependency>
8 0
- 关于SSM框架搭建以及简单的增删改查
- SSM框架搭建+easyui增删改查
- Maven+SSM框架实现简单的增删改查
- Maven+SSM框架实现简单的增删改查
- SSM框架之一个简单的增删改查Demo
- SSM框架---增删查改
- SSM框架搭建+easyui增删改查实现
- ssm框架搭建+easyui增删改查实现
- ssm框架搭建+easyui增删改查实现
- ssm框架搭建+easyui增删改查实现
- ssm框架搭建+easyui增删改查实现
- (经典demo)Maven+SSM框架实现简单的增删改查
- 【ssm框架】增删改查的最佳实践
- SpringMVC之简单的增删改查(SSM整合)
- SSM 增删改查
- yii2 basic 框架的初层应用以及简单的增删改查
- ssm整合的增删改查
- SSM框架搭建(Spring+SpringMVC+MyBatis)与easyui集成并实现增删改查实现
- 结构型模式之适配器模式(Adapter)
- php
- hdu1869 六度分离 (floyed模板题)
- Failed to place enough replicas
- vue.js2.0环境搭建
- 关于SSM框架搭建以及简单的增删改查
- 一个强大的下拉刷新框架android-Ultra-Pull-To-Refresh
- 历史命令统计
- Dubbo+Zookeeper+Spring mvc+Nginx 集群负载均衡 详细demo
- 荷兰国旗问题
- Java删除文件夹通用方法
- Spring中的AOP技术(一)
- java tcp socket编程
- 使用python装饰器计算函数运行时间