1. 程式人生 > >表單提交資料以及後臺儲存小結

表單提交資料以及後臺儲存小結

一、表單頁面分析 1,提交的引數:表單的內容
//ajax的post方式提交表單 //$("form").serialize()將表單序列號為key-value的形式的字串 //(這裡注意,在form之中的input裡需要增加 name $.post("/item/save",$("form").serialize(),function(data)){ }
2,可以將這裡的key-value的形式轉化為json串形式
function formToJson(formObj){
   var o={};
   var a=formObj.serializeArray();
   $.each(a, function() {        if(this.value){
           if (o[this.name]) {
               if (!o[this.name].push) {
                   o[this.name]=[ o[this.name] ];
               }
                   o[this.name].push(this.value || null);
           }else {
               if($("[name='"+this.name+"']:checkbox",formObj).length){
                   o[this.name]=[this.value];
               }else{
                   o[this.name]=this.value || null;
               }
           }
       }
   });
   return JSON.stringify(o);
};
二、後臺實現分析 1,Dao層

通過逆向工程生成:

generatorConfig.xml(使用方式見標黃處)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<!-- 配置Run As Maven build : Goals 引數 : mybatis-generator:generate -Dmybatis.generator.overwrite=true -->


<!-- 配置 tableName,使用 Run As Maven build 生成 dao model 層 -->
<generatorConfiguration>
    <!-- 配置檔案路徑 -->
    <properties url="${mybatis.generator.generatorConfig.properties}"/>

    <!--資料庫驅動包路徑 -->
    <classPathEntry location="${drive.class.path}"/>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--關閉註釋 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--資料庫連線資訊 -->
        <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}"
                        password="${jdbc.password}">
        </jdbcConnection>

        <!--生成的model 包路徑 -->
        <javaModelGenerator targetPackage="${model.package}" targetProject="${target.project}">
            <property name="enableSubPackages" value="ture"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--生成xml mapper檔案 路徑 -->
        <sqlMapGenerator targetPackage="${xml.mapper.package}" targetProject="${target.project}">
            <property name="enableSubPackages" value="ture"/>
        </sqlMapGenerator>

        <!-- 生成的Dao介面 的包路徑 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}" targetProject="${target.project}">
            <property name="enableSubPackages" value="ture"/>
        </javaClientGenerator>

        <!--對應資料庫表名 -->
        <!-- schema即為資料庫名 tableName為對應的資料庫表 domainObjectName是要生成的實體類 enable*ByExample
                是否生成 example類   -->
        <!-- <table schema="${jdbc.schema}" tableName="director_task"
               domainObjectName="DirectorTask" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="task"
               domainObjectName="Task" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="regular"
               domainObjectName="Regular" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="issue_member"
               domainObjectName="IssueMember" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        
        
        <table schema="${jdbc.schema}" tableName="consultant"
               domainObjectName="Consultant" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="doctor"
               domainObjectName="Doctor" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="member"
               domainObjectName="Member" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="consultant_doctor_relative"
               domainObjectName="ConsultantDoctorRelative" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="contract_information"
               domainObjectName="ContractInformation" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="right_info"
               domainObjectName="RightInfo" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="role_info"
               domainObjectName="RoleInfo" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="role_right"
               domainObjectName="RoleRight" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        <table schema="${jdbc.schema}" tableName="user_role"
               domainObjectName="UserRole" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
         <table schema="${jdbc.schema}" tableName="issue_member"
               domainObjectName="IssueMember" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
        -->
        <table schema="${jdbc.schema}" tableName="user_list"
               domainObjectName="UserList" enableCountByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true">
        </table>
  
    </context>
</generatorConfiguration>

generatorConfig.properties

# 資料庫驅動jar 路徑
drive.class.path=C:\\Users\\lmk\\.m2\\repository\\mysql\\mysql-connector-java\\5.1.30\\mysql-connector-java-5.1.30.jar

# 資料庫連線引數
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://?useUnicode=true&characterEncoding=utf-8
jdbc.username=
jdbc.password=
jdbc.schema=HealthControlSystem

# 包路徑配置
model.package=cn.edu.bupt.springmvc.web.model.zunzun
dao.package=cn.edu.bupt.springmvc.web.dao.zunzun
xml.mapper.package=cn.edu.bupt.springmvc.web.dao.zunzun

target.project=src/main/java

2,Service層

定義service介面(interface下的方法不加以實現,連{}也沒有)

實現類impl(implement)

實現邏輯主要是以下兩種:

接受或者new 目標物件,物件屬性(get set方式)

呼叫Mapperinsert方法插入資料。

在service層中關於呼叫mapper類的方法,有一類方法:XXXByExammpleWithBLOBs(example)

//根據cid查詢規格引數模板

TbItemParamExample example = new TbItemParamExample(); //new 一個

Criteria criteria = example.createCriteria();

criteria.andItemCatIdEqualTo(cid);

//判斷是否查詢到結果

if (list != null&&list.size() > 0) {

TbItemParam itemParam = list.get(0); // get(0)

return TaotaoResult.ok(itemParam);

}

3,Controller層

主要的實現邏輯:

指定method的post或者get方法以及請求的路徑

呼叫service進行資料的CRUD

@PathVariable

@ResponseBody

@RequestMapping

@Controller

@Autowired(用@resource代替)

4,涉及的json與java知識

//json資料A轉換成java物件

List<Map>mapList = JsonUtils.jsonToList(A, Map.class);

String json = JsonUtils.objectToJson(result);

//java處理

sb = new StringBUffer()物件.append()

map.get("XXX")方式取得

return sb.toString()

//List的使用

ListresultList = new ArrayList<>();

resultList.add();

//判空

StringUtils.isBlank(callback);

三、Js跨域

跨域的定義:

1、如果兩個url的域名不同

2、Url相同,埠不同也是跨域

3、Ip不同也是跨域

可以使用jsonp解決跨域的問題。

1、在js中不能跨域請求資料,js可以跨域請求js片段。

2、可以把資料包裝成js片段可以把資料使用js方法來包裝,形成一條方法的呼叫語句。

3、可以使用ajax請求js片段,當js判斷到達瀏覽器會被立即執行。

4、在瀏覽器端,先建立好回撥方法,在回撥方法中通過引數可以獲得請求的資料。

1,前期準備:

1、需要把js的回撥方法先寫好。

2、ajax請求時,需要把回撥方法的方法名傳遞給服務端。

服務端接收回調方法名,把資料包裝好,響應給客戶端。

跨域,沒實現過,不好寫。。