MAVEN IDEA SSM框架搭建《二》
2017-09-18 11:44
405 查看
前言
本文是想介绍使用html作为前端页面的ssm框架搭建,由于上次在“ssm框架搭建《一》”中大概介绍了如何见ssm框架(使用的是.jsp文件作为前端页面),这次我们只需要在此上面做修改,以及完善一些功能,这次改动如下:1.使用html文件作为前端页面; 2.使用aop管理事物; 3.整体的项目结构的改变; 4. 添加bootstrap插件; 5. 添加登录页面以及登录功能; 6. mysql的版本5.5
一、使用html文件作为前端页面
由于本人现在习惯用html文件,所以之前搭建ssm框架的时候就很粗糙的写前端,等到用了html页面后,我们会将慢慢完善它。使用thml文件作为前端页面,我们得改spring-mvc的配置(也就是修改视图类型):(原来的:)
(修改后:)
不过它还需加freemarker的jar包,已经在spring-mvc配置它的bean,下面是修改后的spring-mvc文件:
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 静态资源映射 --> <mvc:resources location="/WEB-INF/res/" mapping="/res/**" order="0"/> <!--2.1.freemarker配置--> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="" /> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">0</prop> <prop key="default_encoding">UTF-8</prop> <prop key="number_format">0.##########</prop> 4000 <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> <prop key="classic_compatible">true</prop> <prop key="template_exception_handler">ignore</prop> </props> </property> </bean> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 --> </list> </property> </bean> <!-- 开启controller注解支持 --> <!--注:这里要特别注意,springmvc和spring的配置文件中都有context:component-scan,一个是扫描controller,一个时扫描service,在指定扫描路径时最好不要一样,不要让他们交叉扫描,不然会导致事务不能回滚的错误。如果一定要一样的话那么可以使用如下配置来进行排除:--> <!-- 注意事项请参考:http://jinnianshilongnian.iteye.com/blog/1762632 --> <context:component-scan base-package="com.sb"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- springmvc的配置文件中不扫描带有@Service注解的类 --> <context:component-scan base-package="com.sb"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> </context:component-scan> <!--2.2视图配置--> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="exposeRequestAttributes" value="true" /> <property name="exposeSessionAttributes" value="true" /> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/> <property name="cache" value="true"/> <property name="prefix" value="/WEB-INF/"/> <property name="suffix" value=".html"/> <property name="contentType" value="text/html; charset=UTF-8"/> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 最大下载速度 --> <property name="maxUploadSize"> <value>104857600</value> </property> <property name="maxInMemorySize"> <value>2048</value> </property> </bean> <!-- 注解标签驱动开启 --> <mvc:default-servlet-handler /> <mvc:annotation-driven/> <context:annotation-config/> </beans>
修改后的pom.xml文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ssmDemo</groupId> <artifactId>demo</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>demo Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- spring版本号 --> <spring.version>4.0.2.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.6</mybatis.version> <!-- log4j日志文件管理包版本 --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- 导入java ee jar 包 --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <!-- spring核心包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!-- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- 导入Mysql数据库链接jar包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency> <!-- JSTL标签类 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 日志文件管理包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- log end --> <!-- 映入JSON --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!--html 视图 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <!--josn转换工具--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.31</version> </dependency> </dependencies> <build> <finalName>demo</finalName> <!-- 出现加载不了mapper里.xml文件就用。建议放在这也没啥 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/**.*</include> <include>**.*</include> </includes> </resource> </resources> </build> </project>
二、使用aop管理事物
之前在搞项目的时候,日志控制台总是有debug描述:然后我上网查了资料,需要aop,那么我们得在spring-tontext文件里配置一下:
<?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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--1. 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreUnresolvablePlaceholders" value="true"/> <property name="locations"> <list> <value>classpath*:/properties/db.properties</value> </list> </property> </bean> <!--2. 数据源的创建 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!--3. spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 注:项目结构变化了此路劲需要变动--> <property name="mapperLocations" value="classpath:com/sb/**/*Mapper.xml"/> </bean> <!-- 4.dao包下,spring会自动扫描以下 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.sb"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <!-- 5.spring事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 6.面向切面--> <tx:advice id="tx" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="find*" read-only="true"/> <tx:method name="get*" read-only="true"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* com.sb.*.*.*(..))" id="ap"/> <aop:advisor advice-ref="tx" pointcut-ref="ap"/> </aop:config> </beans>
三、整体的项目结构的改变
这次项目结构是以功能模块为主,然后所以的配置扫描的包都只扫描”com.sb”下就ok了:四、添加bootstrap插件
这里我们需要在项目里添加bootstrap、juqery等插件(没有的朋友,需要在官网上下载),打上马赛克我们现在还不需要:五、添加登录页面以及登录功能
5.1、一个登录的页面index.html由于前端代码在这个会显示错误,我只能搞图片了:
5.2、dao层的接口类
package com.sb.login; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; @Repository public interface ILoginDao { //获取用户列表 List<Map<String,Object>> getList(Map<String, Object> m); }
5.3、service的接口类
package com.sb.login; import java.util.List; import java.util.Map; public interface ILoginService { //获取用户列表 List<Map<String,Object>> getList(Map<String, Object> m); }
5.4、service的接口实现类
package com.sb.login; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; @Service("loginService") public class LoginServiceImpl implements ILoginService { @Resource private ILoginDao loginDao; //获取用户列表 public List<Map<String, Object>> getList(Map<String, Object> m) { return loginDao.getList(m); } }
5.5、mapper文件
<?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"> <mapper namespace="com.sb.login.ILoginDao"> <!--获取用户列表--> <select id="getList" parameterType="com.sb.login.Login" resultType="map"> SELECT * FROM USER <where>1=1 <if test="ID!='' and ID!=null"> AND ID=#{id} </if> <if test="login_name!='' and login_name!=null"> AND login_name=#{login_name} </if> <if test="login_password!='' and login_password!=null"> AND login_password=#{login_password} </if> </where> </select> </mapper>
5.6、登录功能的control类
package com.sb.login; import com.alibaba.fastjson.JSON; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by wu on 2017/8/4. */ @Controller public class LoignController { @Autowired private ILoginService loginService; @RequestMapping("/") public String index(HttpServletRequest request,Model model){ String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); model.addAttribute("host",url); return "index"; } @RequestMapping("/main") public String goToMain(){ return "myMain"; } @RequestMapping("/welcome") public String welcome(){ return "welcome"; } @RequestMapping("/login") @ResponseBody public String login(HttpServletRequest request, HttpServletResponse response){ System.out.println(request.getSession()); Map<String ,Object> m=new HashMap<String, Object>(); m.put("login_name",request.getParameter("username")); m.put("login_password",request.getParameter("password")); List< Map<String ,Object>> list=loginService.getList(m); Map<String ,Object> map=list.get(0); if(map !=null){ request.getSession().setAttribute("L",map.get("login_name")); //request.getSession().setAttribute("U",map.get("login_name")); return "1"; }else{ return "0"; } } }
六、演示结果
数据库:首页:
输入admin–admin 点击登录跳转到主页面:
这个是验证事务的启动:
七、结束语
今天任务也就到这了,后期还会继续完善我们系统的功能;比如用户管理模块啊,角色管理模块啊等等。祝大家学习愉快!!!!!相关文章推荐
- 使用idea搭建一个简单的SSM框架:(1)使用idea创建maven项目
- idea maven ssm框架搭建《一》
- 使用IDEA搭建SSM框架(IDEA+Maven+Spring+SpringMVC+MyBatis)
- 使用IDEA配置Maven搭建开发框架ssm教程
- 手把手搭建最简单的SSM框架Maven,idea(spring+springmvc+mybatis)附源代码
- IntelliJ IDEA 搭建基于Maven 的SSM(一)(spring,springMvc,Mybatis)框架整合
- idea中搭建基于maven的ssm整合框架
- [置顶] 【java】SSM框架搭建(一)——idea搭建maven聚合工程
- J2EE项目系列(四)--SSM框架构建积分系统和基本商品检索系统(Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN)(2)建立商品数据库和Lucene的搭建
- 使用maven搭建ssm框架遇到的spring找不到配置文件问题
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- MyEclipse使用Maven创建web项目+搭建SSM框架教
- IDEA创建maven项目 整合SSM框架
- SSM框架整合 4000 (IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- Eclipse中搭建SSM框架之利用Maven建立项目
- interlliJ idea16搭建maven和ssm框架,逆向工程
- SSM框架搭建(二) 创建MAVEN项目
- 如何搭建maven项目和搭建ssm框架