IWS(Information Web System)

說明:該項目主要技術路線:spring+mybatis+maven

1、首先查看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:p="http://www.springframework.org/schema/p"
    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.1.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                        http://www.springframework.org/schema/mvc  
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <!-- 自動掃描該包,使SpringMVC認爲包下用了@controller註解的類是控制器 -->
    <!-- 此處不需修改 -->
    <context:component-scan base-package="com.iws.controller" />

    <!-- 加載註解(如@controller)驅動 -->
    <mvc:annotation-driven />

    <!-- 國際化攔截器 ???用於不同國家語言切換-->
    <mvc:interceptors>
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    </mvc:interceptors>
    <!-- ???此處考慮用那種方式設置國際化 -->
    <!-- <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /> -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">   
     <property name="basename" value="messages" />
     <property name="defaultEncoding" value="UTF-8"/>
     <property name="useCodeAsDefaultMessage" value="true" />

   </bean>

    <!--避免IE執行AJAX時,返回JSON出現下載文件,例如在百度上點擊一個連接,你無法確定該鏈接點擊後是跳轉到另一個頁面還是自動下載頁面,而該配置則將頁面限定爲text/html頁面-->
    <!-- 此處不需修改 -->
    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

    <!-- 啓動SpringMVC的註解功能,完成請求和註解POJO的映射,將json字符串形式的變量轉換爲類直接調用,例如ItsmOrderController中的queryItsmOrderDo方法中傳入的ItsmOrderSearchParameter 原本傳入的是json字符串,現在可以當做類來用
@RequestMapping(value="/queryItsmOrderDo")
    @ResponseBody
    public DataGrid<ItsmOrderInfoBean> queryItsmOrderDo(HttpServletRequest request,HttpServletResponse response,ItsmOrderSearchParameter itsmOrderSearchParameter)
    {   

 -->
    <!-- 此處不需修改 -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter" />    <!-- JSON轉換器 -->
            </list>
        </property>
    </bean>

    <!-- 定義跳轉的文件的前後綴 ,視圖模式配置-->
    <!-- 此處不需修改 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 這裏的配置我的理解是自動給後面action的方法return的字符串加上前綴和後綴,例如在String foward = "admin/itsmorder/ItsmOrder";該字符串加上前後綴,變成一個 可用的url地址/WEB-INF/jsp/admin/itsmorder/ItsmOrder.jsp,這裏涉及到訪問的安全性問題 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- 配置文件上傳,如果沒有使用文件上傳可以不用配置,當然如果不配,那麼配置文件中也不必引入上傳組件包 -->
    <!-- 此處不需修改 -->
    <bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <!-- 默認編碼 -->
        <property name="defaultEncoding" value="utf-8" />  
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000" />  
        <!-- 內存中的最大值 -->
        <property name="maxInMemorySize" value="40960" />  
    </bean>   
</beans>

2、(1)在com.iws.pojo.itsmorder文件夾下面定義ItsmOrderDto、ItsmOrderInfoBean、ItsmOrderSearchParameter三個類,其中ItsmOrderInfoBean是數據庫表類,ItsmOrderSearchParameter是用於查詢條件,ItsmOrderDto是將ItsmOrderInfoBean和ItsmOrderSearchParameter兩個封裝爲一個類來使用。
     (2)接着創建相應的DAO和SERVICE接口和實現
     (3)接下來創建ItsmOrderMapping,這裏是mybatis的配置文件,該文件會在啓動web服務器後自動加載,其中自動掃描加載的配置文件可以在Spring-Mybatis.xml中看到,如
Spring-Mybatis.xml中看到,如
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自動掃描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/iws/mapping/*.xml"></property>
    </bean>
     (4)接下來重點查看下ItsmOrderMapper.xml文件,主要看select方法爲例,其他update和delete類似:

 <!-- select中id對應Dao接口中的方法名-->
<select id="queryItsmOrderByParameter" resultMap="BaseResultMap"  parameterType="com.iws.pojo.itsmorder.ItsmOrderDto">

        SELECT * FROM (
                SELECT tt.*, ROWNUM AS rowno FROM (
                        select                                <!-- 這裏可以發現數據庫查詢條件嵌套了三個select,-->
        <if test="itsmOrderInfoBean.uuid != null">
            uuid,
        </if>
        <if test="itsmOrderInfoBean.att3 != null">
            att3,
        </if>
        1                 <!-- 這裏可以看到多出一個1,這個1的目的就是填補判斷條件“ att3,”後面的那個逗號,這樣數據庫查詢語句就不會報錯了-->
        from
        itsmorder where 1 = 1            <!-- 這裏的 “where 1 = 1”對應<include refid="whereSql"></include>中的and uuid = 中的and對應變成“where 1 = 1 and uuid=”這樣防止語句報錯 -->

        <include refid="whereSql"></include>

        <!-- start of special -->
        <if test="itsmOrderSearchParameter.sort != null and itsmOrderSearchParameter.sort != ''">
            order by ${itsmOrderSearchParameter.sort} ${itsmOrderSearchParameter.order}
        </if>
        <!-- end of special -->

        ) tt
        WHERE ROWNUM <
        (#{itsmOrderSearchParameter.start}+#{itsmOrderSearchParameter.number})
        ) table_alias WHERE
        table_alias.rowno >=
        #{itsmOrderSearchParameter.start}
    </select>

************************************************************************************************************************
*<sql id="whereSql">
*        <if
*           test="itsmOrderSearchParameter.uuid_equ != null and itsmOrderSearchParameter.uuid_equ != ''">
*            and uuid = #{itsmOrderSearchParameter.uuid_equ,jdbcType=VARCHAR}
*        </if>
*</sql>
***********************************************************************************************************************

其他知識點:
------------------------------------------------------------------------------------------------------------------
項目中分service的作用:
當你需要擴展模塊功能時,可以進行分類,如添加兩個queryService和updateService。

數據庫配置文件jdbc.properties作用:
當Java代碼中用到多種數據庫時,可以通過修改這裏的配置來調用不同數據庫。

uuid的查詢同用一個edit頁面的安全問題的處理,該edit頁面僅僅用於讀取,不能進行修改,要修改的話只能調用dao層。

---------------------------------------------------------------------------------------------------------------------
<update id="batchModifyItsmOrder" parameterType="com.iws.pojo.itsmorder.ItsmOrderDto">
        update itsmorder
        <set>
            <if test="itsmOrderInfoBean.orId != null">
                orId = #{itsmOrderInfoBean.orId,jdbcType=VARCHAR},
            </if>
</set>
        where 1=1
        <include refid="whereSql"></include>
</update>
外界在調用你的update接口的時候,必須判斷調用之前用戶是否在itsmOrderSearchParameter傳入了一個Orid(這裏是考慮安全性問題),如果沒有,用戶傳入的是createTime,如調用的語句是update itsmorder set orid="1" where createTime<Tomorow,則createTime<Tomorow的數據的orid值全部被set爲1,如果有在查詢條件中加入orid,則修改的是一條記錄,而不是全部。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章