为什么80%的码农都做不了架构师?>>>
直接上代码 首先是从程序的入口开始说:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--
设置session过期的时间
-->
<session-config>
<session-timeout>20</session-timeout>
</session-config>
<!--
读取spring的配置文件
-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring.xml;classpath:config/spring-myBatis.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!--
设置字符编码,将所有的字符编码同意设置为utf-8
-->
<filter>
<filter-name>filterEncoding</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>
</filter>
<filter-mapping>
<filter-name>filterEncoding</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<!--
生成一次性验证码的servlet
-->
<servlet>
<servlet-name>verifyCode</servlet-name>
<servlet-class>com.longhang.tool.verifyCode.VerifyCodeServlet</servlet-class>
</servlet>
<!--
将所有*.do的请求交给springMVC的DispatcherServlet来处理
-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/springMVC-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>verifyCode</servlet-name>
<url-pattern>/verifyCode</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
springMVC的配置文件
<?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"
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">
<!--
配置自动扫描的包,让其扫描 com.longhang,controller下面的所有包
-->
<context:component-scan base-package = "com.longhang.controller"></context:component-scan>
<!--
配置视图解析器
将视图逻辑名解析为/*.jsp
-->
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value = "/"></property>
<property name = "suffix" value = ".jsp"></property>
</bean>
</beans>
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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
">
<context:property-placeholder location="classpath:config/druid.properties" />
<!-- 自动扫描(自动注入) -->
<context:component-scan base-package = "com.longhang.service"></context:component-scan>
</beans>
spring-myBatis.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: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-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/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">
<!-- 配置数据源 --><!--
<bean name = "datasource" class = "com.alibaba.druid.pool.DruidDataSource" init-method = "init" destroy-method = "close">
<property name ="url" value = "${jdbc_url}"></property>
<property name="username" value="${jdbc_userName}" />
<property name="password" value="${jdbc_password}" />
</bean>
--><bean name = "datasource" class = "com.alibaba.druid.pool.DruidDataSource" init-method = "init" destroy-method = "close">
<property name ="url" value = "jdbc:mysql://localhost:8000/bookShopping"></property>
<property name="username" value="root" />
<property name="password" value="13072399672" />
</bean>
<!--配置sqlSessionFactory 并读取mybatis的一些配置-->
<bean name = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean">
<property name = "dataSource" ref = "datasource"></property>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!--
自动扫描 将Mapper接口生成代理注入到Spring
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.longhang.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!--
配置事物
-->
<bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name = "dataSource" ref = "datasource"></property>
</bean>
<!--
<tx:annotation-driven transaction-manager = "transactionManager"/>
-->
<!--
事物的具体内容
-->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="append*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="repair" propagation="REQUIRED" />
<tx:method name="delAndRepair" propagation="REQUIRED" />
<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="load*" propagation="SUPPORTS" />
<tx:method name="search*" propagation="SUPPORTS" />
<tx:method name="datagrid*" propagation="SUPPORTS" />
<tx:method name="*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>
<!--
定义一个切面,在定义的切面上加入事物
-->
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* com.longhang.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>
</beans>
关于mybatis的映射文件
<?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.longhang.dao.userDao.UserDao" >
<resultMap id = "baseResultMap" type = "com.longhang.entity.user.User">
<id column = "uid" property = "uid" jdbcType = "CHAR"/>
<result column = "loginname" property = "loginname" jdbcType = "VARCHAR"/>
<result column = "loginpass" property = "loginpass" jdbcType = "VARCHAR"/>
<result column = "email" property = "email" jdbcType = "VARCHAR"/>
<result column = "status" property = "status" jdbcType = "VARCHAR"/>
<result column = "activationCode" property = "activationCode" jdbcType = "CHAR"/>
</resultMap>
<sql id = "base_column_list">
uid,loginname,loginpass,email,status,activationCode
</sql>
<!--根据id查询
返回的类型为User
-->
<select id="findById" resultMap="baseResultMap" parameterType="java.lang.String" >
select
<include refid="base_column_list" />
from l_user
where uid = #{uid,jdbcType=CHAR}
</select>
<!--
根据activationCode查询
返回值是User
-->
<select id = "findByActivationCode" resultMap = "baseResultMap" parameterType = "java.lang.String">
select <include refid = "base_column_list"/>
from l_user
where activationCode = #{activationCode}
</select>
<!--
框架/平台构成:
Maven+Springmvc + Mybatis + Shiro(权限)+ Tiles(模板) +ActiveMQ(消息队列) + Rest(服务) + WebService(服务)+ EHcache(缓存) + Quartz(定时调度)+ Html5(支持PC、IOS、Android)
用户权限系统:
组织结构:角色、用户、用户组、组织机构;权限点:页面、方法、按钮、数据权限、分级授权
项目管理新体验:
快速出原型系统、组件树、版本控制、模块移植、协同开发、实时监控、发布管理
可持续集成:
所有组件可移植、可定制、可扩充,开发成果不断积累,形成可持续发展的良性循环
支持平台平台:
Windows XP、Windows 7 、Windows 10 、 Linux 、 Unix
服务器容器:
Tomcat 5/6/7 、Jetty、JBoss、WebSphere 8.5