当前位置: 首页 > news >正文

徐州市 两学一做网站自己做的网站发到网上

徐州市 两学一做网站,自己做的网站发到网上,wordpress one page,来个网站好人有好报2024本文适用对象#xff1a;已有基础的同学#xff0c;知道基础的SpringBoot配置和Vue操作。 在此基础上本文实现基于SpringBoot和Vue.js基础上的增删改查和数据回显、刷新等。 一、实时显示数据库数据 实现步骤#xff1a; 第1步#xff1a;编写动态请求响应类#xff1a…本文适用对象已有基础的同学知道基础的SpringBoot配置和Vue操作。 在此基础上本文实现基于SpringBoot和Vue.js基础上的增删改查和数据回显、刷新等。 一、实时显示数据库数据 实现步骤 第1步编写动态请求响应类在启动类同父目录下创建controller包在包下创建DataController类添加RestController、RequestMapping()等注解。在类中实例化dao层的BookDa要加上Autowired注解然后编写方法注意返回的结果和调用dao层中的方法记得加上GetMapping等注解 RestController RequestMapping(/api/) public class DataController {Autowiredprivate BookDao bookDao;GetMapping(select)public ListBrand getData(){System.out.println(bookDao.select());return bookDao.select();} } — — — — — — 知识加油站 — — — — — — RestController注解是将一个类标记为处理HTTP请求的控制器并且自动将方法返回的对象转换为JSON或XML格式的响应体发送给客户端。 — — — — — — —  — — — — — — — — — 第2步编写ajax请求在new Vue下写入如下代码 mounted(){axios.get(/api/data).then(response{this.tableData response.data;}) }, 第3步修改启动类写入如下代码 CrossOrigin(origins http://localhost:8081) SpringBootApplication(scanBasePackages com.itheima.controller) MapperScan(com.itheima.dao) public class AdsSdemoApplication {public static void main(String[] args) {SpringApplication.run(AdsSdemoApplication.class, args);} } 实现思路ajax发送请求到controller层controller层负责查询数据库并返回结果给ajaxajax将结果赋值给显示变量Vue根据变量中的值对结果进行显示最终我们能看到网页上的数据。 重点技术原理 1. 数据显示问题 在vue的表格中有一个 :dataxxx的字样其中xxx就是数据源这个数据源会在data()的return中被定义例如在这里数据源都是tableData在tableData中不需要定义具体的字段因为这些字段在tostring函数中都会带有 数据源一般是JSON格式JSON数据有一个特点最外层用 [ ] 符号进行包裹在内层每一个数据都用 { } 符号进行包裹vue表格会自动提取数据库字段的key然后去匹配每个单元格的propxxx如果key和xxx匹配上就将这个key对应的value显示到prop所在单元格的位置。 2.请求发送 mounted简单理解就是在挂载完成即Vue初始化成功HTML页面渲染成功之后执行的钩子函数。 mounted详细解释如下mounted是Vue实例生命周期钩子函数之一。mounted函数会在Vue实例被创建并且挂载到DOM元素DOM元素指的是文档对象模型上之后立即调用。函数的作用是在Vue实例挂载指的是将Vue实例与一个实际的DOM元素关联起来使其能够在该DOM元素内部进行渲染完成后执行一些初始化操作或请求数据。 下面代码的含义是在Vue初始化完成HTML页面渲染成功后发送get请求到/api/data路径请求动态资源返回一个response然后取出data域中的数据赋值给tableData。 3.请求应答 请求会根据RequestMapping中的路径找到controller包下具体的类或方法可以根据请求方式不同调用不同的方法在该例中使用get请求方式对应GetMapping方法调用getData方法getData通过调用dao层下的bookDao中的select方法与数据库进行连接查询后返回List结果集结果被返回到请求的发送方。 二、注意事项  说明6点注意事项 1、右上角的小图标只能用于测试修改静态页面的样式实际和数据库的关联不能通过这种方式进行。 2、如果想测试动态页面的效果与数据库关联必须通过启动类启动启动类是带有main方法的要注意选择Current File进行启动否则可能启动方式可能受前面测试影响。 3、注意启动类必须同controller、dao等一系列的包在同一个目录下启动类的上面不能有其它包如果不在同一目录下可能导致扫描不到controller中的资源路径 也可以通过注解将controller包扫描的方式解决 SpringBootApplication(scanBasePackages com.itheima.controller) 4、如果想访问前端界面只需要将webapp视为根目录相当于localhost这一级然后想要访问具体的静态资源只需要输入webapp后面的路径即可 比如ADSS.html在wewbapp目录下于是只需要在localhost:8081后面输入/ADSS.html即可访问该静态资源 5、动态资源比如跳转路径访问路径一般存放在controller目录下注意controller包需要与启动类在同一个层次目录下 访问数据只需要输入RequestMapping里的地址即可直接访问 6、实际网站部署还要注意跨域问题一般在启动类上添加CrossOrigin注解CrossOrigin(origins http://localhost:请求端口号) 三、删除单条多条 3.1. 删除单条数据 第1步dao层下的BookDao接口中定义delete方法实现从数据库中删除单条数据 Delete(delete from tb_brand where id #{id}) public void delete(int id); 第2步在controller层下定义请求路径传入参数执行dao层删除方法 DeleteMapping(delete/{id}) public void deleteData(PathVariable(id) int id){bookDao.delete(id); } — — — — — — 知识加油站 — — — — — — 1. PathVariable注解是Spring MVC框架中的一个注解用于从URL路径中获取变量的值并将其绑定到方法的参数上。比如请求地址GetMapping(/users/{ID}) 方法public User getUserById(PathVariable Long id) 。那么注解会将{ID}最终被替换的值赋值给参数id。 2. slot - scopescopeslot-scope是一个特殊的属性用于在父组件中向子组件传递数据。slot-scopescope定义了一个名为scope的变量用于接收父组件传递的数据。 3. row是表示一个数据表格中的某一行的数据对象。scope可以理解为整张数据表格中的全体数据对象。 4.template标签是Vue.js中用于定义组件模板的容器 — — — — — — —  — — — — — — — — — ‘第3步添加触发事件调用methods中的方法。在这里触发事件是点击删除按钮传入的参数是所点删除按钮所属的数据对象。这里的方法名是deleteSingle。 template slot-scopescopeel-button typedanger plain sizemini clickdeleteSingle(scope.row)删除/el-buttonel-button typewarning plain clickupdateVisible true sizemini修改/el-button /template — — — — — — 知识加油站 — — — — — — .then( )被用于处理成功的HTTP响应服务器成功处理了客户端发出的HTTP请求并返回了预期的响应。 response是.then()方法中的一个参数表示从服务器返回的响应数据 — — — — — — —  — — — — — — — — — 第4步向后端服务器发送请求删除数据同时刷新页面。 methods: {/*删除单条*/deleteSingle(row){axios.delete(/api/delete/row.id).then((){axios.get(/api/select).then(response { /*刷新页面*/this.tableData response.data;})})}, }3.2. 删除多条数据 第1步编写dao层下的BookDao接口创建deleteAll方法传入ids数组指示待删除的数据组id。 public void deleteAll(int [] ids); 第2步编写mybatis-config.xml、BookMapper.xml、application.yml文件。 鉴于需要用到循环稍显复杂用注解来编写SQL语句 mybatis-config.xml文件如下纯套模板 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configuration /configuration BookMapper.xml文件如下【重点】注意1.因为是删除操作所以要写delete delete iddeleteAll 2. deleteAll必须同接口的方法名一致 3. SQL语句因为 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.itheima.dao.BookDao!--查询--delete iddeleteAll delete from tb_brand where idin(foreach collectionids itemid separator,#{id}/foreach);/delete /mapper — — — — — — 知识加油站 — — — — — — 1. IN关键字用于指定一个字段的值必须匹配给定的多个值中的任意一个。在这里IN关键字将id字段和ids集合中的值进行匹配逐一删除。 2. collection属性用于指定一个集合对象是一个动态 SQL 语句中的占位符。 3. item属性用于指定一个在迭代过程中使用的变量名。在每次迭代时会被赋予集合中的一个元素值。 4.separator属性用于指定一个分隔符用于在迭代过程中拼接多个值。在这里指定了一个逗号作为分隔符用于将多个id值拼接成一个逗号分隔的字符串。 — — — — — — —  — — — — — — — — — application.yml添加代码如下扫描到对应配置文件 mybatis:config-location: classpath:mybatis-config.xmlmapper-locations: classpath:mapper/*.xml 第3步编写controller层下的DataController类创建deleteAllData方法用于调用book层中定义的方法执行批量删除操作 RestController RequestMapping(/api/) public class DataController {DeleteMapping(delete/a/{ids})public void deleteAllData(PathVariable(ids) int [] ids){bookDao.deleteAll(ids); } 第4步添加复选框【重点】触发事件 el-table:datatableDatastylewidth: 100%selection-changehandleSelectionChangeselect-allhandleSelectAllselecthandleSelect el-table-column typeselection width55 aligncenter/el-table-column — — — — — — 知识加油站 — — — — — — 1. :datatableData用于指定表格要展示的数据源。 2. selection-changehandleSelectionChange用于监听用户在表格中选中或取消选中行的操作。 3. select-allhandleSelectAll用于监听用户点击全选的操作。 4. selecthandleSelect用于监听用户点击某一行的操作。 5. typeselection是el-table-column组件的一个属性用于指定该列的类型为选择列即在该列显示选择框。 — — — — — — —  — — — — — — — — — 第5步增设按钮触发事件调用方法DeleteAll el-button typedanger plain clickDeleteAll一键删除/el-button 第6步具体定义事件的方法  handleSelectAll和handleSelect方法的思路都是将用于所选择行的id读取存入selection中然后转化为ids数组。在DeleteAll方法中delete请求将ids作为参数请求页面用于删除指定id行的数据get请求用于刷新页面。 methods: {DeleteAll(){axios.delete(/api/delete/a/this.ids).then(response{axios.get(/api/select).then(response{this.tableData response.data;})})},handleSelectAll(selection) {this.ids selection.map(item item.id);// selection 参数是所有被选中的行数据的数组},handleSelect(selection) {this.ids selection.map(item item.id);// selection 参数是当前被选中的行数据的数组} } — — — — — — 知识加油站 — — — — — — 1. selection是一个参数用于接收当前被选中的行数据的数组。 2. 当用户选择行时会触发select和selection-change事件并将被选中的行数据作为参数传递给相应的事件处理方法。 3. item是在map方法中的回调函数的参数表示当前遍历到的元素即被选中的行数据对象。 4. 通过selection.map(item item.id)的方式遍历selection数组并将每个行数据对象的id属性提取出来最终形成一个新的数组ids。 5. map方法会将回调函数的返回值组成一个新的数组返回。 6. {ids}是一个简单的JavaScript对象字面量表达式其中ids是对象的属性名。这种表达式用于创建一个对象并将属性ids设置为undefined表示一个变量未被赋予值或者一个对象属性不存在该属性的值显式地设置为未定义表示一个缺少值的状态这意味着该属性存在但没有被赋予一个明确的值的值。 7. #{ids}和${ids}是在一些模板引擎中使用的表达式用于插入变量值。 8. #{ids}常用于某些模板引擎如Ruby的ERB中。 9 ${ids}常用于JavaScript中的模板字面量或模板字符串中。这种表达式的作用是将变量的值插入到字符串中以动态生成字符串内容。 10. 模板字面量Template literals和模板字符串Template strings是指JavaScript中一种特殊的字符串语法它们提供了更灵活和方便的字符串操作和拼接方式。模板字面量是指使用反引号包围的字符串它们支持在字符串中插入变量、表达式和换行符而无需使用字符串拼接符号如加号 。 11. {data:ids}是一个JavaScript对象字面量表达式其中data是对象的属性名ids是属性值。它创建了一个具有data属性的对象且该属性的键是字符串data值是变量ids的值。 — — — — — — —  — — — — — — — — — 四、新增 第1步在dao层的BookDao接口下创建add方法用Insert注解往数据库中添加信息 Insert(Insert into tb_brand(brand_name,company_name,ordered,description,status)values(#{brand_name},#{company_name},#{ordered},#{description},#{status})) public void add(Brand brand);第2步在controller层下定义insertData方法注意1、是用Post发送请求数据是在请求体中因此需要标注RequestBody注解。2、注意类顶部的RequestMapping(/api/)在地址栏访问时一定要加上类上标注的地址前缀。 RestController RequestMapping(/api/) public class DataController {PostMapping(insert)public void insertData(RequestBody Brand brand){ System.out.println(brand);bookDao.add(brand);} } — — — — — — 知识加油站 — — — — — — 1. RequestBody从请求体中获取数据如 JSON 或 XML 格式的数据绑定到方法的参数上。请求体中的数据必须与方法参数的类型匹配Spring MVC 会自动进行数据转换。 2. RestController注解告诉 Spring MVC 这个类是一个为 RESTful Web服务的控制器并且其中的方法会根据请求的 URL 路径和 HTTP 方法PUT、GET...进行映射和处理。结合了 Controller和ResponseBody注解的功能。 — — — — — — —  — — — — — — — — — 第3步定义数据格式。注意1、定义的字段名要与数据库的字段名一致因为持久化框架或对象关系映射ORM工具可以自动映射数据库字段和对象的属性。如果字段名一致可以方便地进行自动映射减少手动的配置和转换工作。可以避免因为字段名不同而导致数据的混乱和不一致。 data: {brand_name: ,company_name: ,ordered: ,description: ,status: }, 第4步 为新增按钮绑定事件制作新增弹窗 下面是为新增按钮绑定事件点击可显示弹窗 el-button typeprimary plain clickdialogVisible true新增/el-button 下面是定义弹窗的内容注意1. v-model的值可以与data对象的属性进行绑定进而赋值。2. 点击确定绑定了2个事件一个是隐藏弹窗一个是触发提交请求然而最好一个事件只绑定一个方法因此将语句和方法封装在一个fun方法内进行统一调用。 !--新增的弹窗--el-dialog title新增:visible.syncdialogVisiblewidth30%el-form :inlinetrue classdemo-form-inline classcustom-button el-form-item label品牌名称:el-input v-modeldata.brand_name placeholder输入品牌信息 /el-input/el-form-itemel-form-item label公司名称:el-input v-modeldata.company_name placeholder输入公司信息/el-input/el-form-itemel-form-item label排序:el-input v-modeldata.ordered placeholder输入排序信息/el-input/el-form-itemel-form-item label描述:el-input v-modeldata.description placeholder输入描述信息/el-input/el-form-itemel-form-item label状态:el-input v-modeldata.status placeholder输入状态信息/el-input/el-form-item/el-formspan slotfooter classdialog-footerel-button clickdialogVisible false取 消/el-buttonel-button typeprimary clickfun确 定/el-button/span/el-dialog 第5步 方法的定义如下的fun方法封装了2条语句add2database方法用于向后台发送数据 fun(){this.dialogVisible false;this.add2database(); }, 调用axios的post请求带有2个参数第1个参数是请求的 URL。它表示要发送 POST 请求的目标地址即服务器端的接口或路由。第2个参数是一个对象包含了要发送的数据。 add2database(){console.info(this.data);axios.post(/api/insert,this.data).then((){axios.get(/api/select).then(response{this.tableData response.data;})})}, 特别要注意一点像data必须要加this.data以此才能指代data对象。 五、修改 第1步 public void update(Brand brand); 第2步 RestController RequestMapping(/api/) public class DataController {PostMapping(update)public void updateData(RequestBody Brand brand){bookDao.update(brand);} } 第3步 !--修改--update idupdateupdate tb_brandsetif testbrand_name ! null and brand_name ! brand_name #{brand_name},/ifif testcompany_name ! null and company_name ! company_name #{company_name},/ifif testordered ! null ordered #{ordered},/ifif testdescription ! null and description ! description #{description},/ifif teststatus ! null status #{status}/if/setwhere id #{id}; /update 第4步 el-table-column template slot-scopescopeel-button typewarning plain clickshowback(scope.row) sizemini修改/el-button/template /el-table-column showback(row){this.updateVisible true;this.data row; }, 第5步 !--修改的弹窗--el-dialog title新增:visible.syncupdateVisiblewidth30%el-form :inlinetrue classdemo-form-inline classcustom-button el-form-item label品牌名称:el-input v-modeldata.brand_name placeholder输入品牌信息 /el-input/el-form-itemel-form-item label公司名称:el-input v-modeldata.company_name placeholder输入公司信息/el-input/el-form-itemel-form-item label排序:el-input v-modeldata.ordered placeholder输入排序信息/el-input/el-form-itemel-form-item label描述:el-input v-modeldata.description placeholder输入描述信息/el-input/el-form-itemel-form-item label状态:el-input v-modeldata.status placeholder输入状态信息/el-input/el-form-item/el-formspan slotfooter classdialog-footerel-button clickupdateVisible false取 消/el-buttonel-button typeprimary clickchange确 定/el-button/span/el-dialog 第6步 change(){this.updateVisible false;axios.post(/api/update,this.data).then((){axios.get(/api/select).then(respnse{this.tableData response.data;})}) }, 六、查询 第1步编写dao层接口方法传入一个查询参数返回多个实体类数据集合 public ListBrand inquiry(String statement); 第2步编写controller层通过get方法加上PathVariable注解可以将从请求头获得的参数赋值给参数调用dao层方法返回实体类集合。 RestController RequestMapping(/api/) public class DataController {GetMapping(inquiry/{statement})public ListBrand inquiryData(PathVariable String statement){System.out.println(statement);return bookDao.inquiry(statement);} } 第3步编写BookMapper.xml映射文件。 功能说明前端在查询框内输入一段文字或数字点击查询可以在数据库中的全字段进行搜索只要某一条数据中模糊匹配到输入的内容就将该条数据输出如果输入的内容为空则显示所有数据。 select idinquiry resultTypecom.itheima.domain.BrandSELECT * FROM tb_brandwhereif teststatement ! null and statement ! if testbrand_name ! null and brand_name ! OR brand_name LIKE CONCAT(%, #{statement}, %)/ifif testordered ! null OR CAST(ordered AS CHAR) LIKE CONCAT(%, #{statement}, %)/ifif teststatus ! nullOR CAST(status AS CHAR) LIKE CONCAT(%, #{statement}, %)/ifif testcompany_name ! null and company_name ! OR company_name LIKE CONCAT(%, #{statement}, %)/ifif testdescription ! null and description ! OR description LIKE CONCAT(%, #{statement}, %)/if/if/where/select 第4步 !--查询和查询栏-- el-form :inlinetrue classdemo-form-inline classcustom-buttonel-form-itemel-input v-modeluser placeholder输入查询信息/el-input/el-form-itemel-form-itemel-button typeprimary clickonSubmit查询/el-button/el-form-item /el-form 第5步 data(){return{tableData: [],temp: [],} } 第6步 onSubmit() {axios.get(/api/inquiry/this.user).then((response){console.info(response.data);this.tableData response.data;axios.get(/api/select)})this.tableData this.temp },
文章转载自:
http://www.morning.wztlr.cn.gov.cn.wztlr.cn
http://www.morning.jlqn.cn.gov.cn.jlqn.cn
http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn
http://www.morning.ylph.cn.gov.cn.ylph.cn
http://www.morning.bnrff.cn.gov.cn.bnrff.cn
http://www.morning.qwmsq.cn.gov.cn.qwmsq.cn
http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn
http://www.morning.kkzwn.cn.gov.cn.kkzwn.cn
http://www.morning.sbkb.cn.gov.cn.sbkb.cn
http://www.morning.dxsyp.cn.gov.cn.dxsyp.cn
http://www.morning.mysmz.cn.gov.cn.mysmz.cn
http://www.morning.krtcjc.cn.gov.cn.krtcjc.cn
http://www.morning.pwqyd.cn.gov.cn.pwqyd.cn
http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn
http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn
http://www.morning.hgkbj.cn.gov.cn.hgkbj.cn
http://www.morning.mfmx.cn.gov.cn.mfmx.cn
http://www.morning.wdrxh.cn.gov.cn.wdrxh.cn
http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn
http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn
http://www.morning.cnlmp.cn.gov.cn.cnlmp.cn
http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn
http://www.morning.lbggk.cn.gov.cn.lbggk.cn
http://www.morning.dglszn.com.gov.cn.dglszn.com
http://www.morning.khdw.cn.gov.cn.khdw.cn
http://www.morning.jpwkn.cn.gov.cn.jpwkn.cn
http://www.morning.zcyxq.cn.gov.cn.zcyxq.cn
http://www.morning.hphqy.cn.gov.cn.hphqy.cn
http://www.morning.nnjq.cn.gov.cn.nnjq.cn
http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn
http://www.morning.bpmz.cn.gov.cn.bpmz.cn
http://www.morning.pmtky.cn.gov.cn.pmtky.cn
http://www.morning.jrpmf.cn.gov.cn.jrpmf.cn
http://www.morning.jkbqs.cn.gov.cn.jkbqs.cn
http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn
http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn
http://www.morning.bdtpd.cn.gov.cn.bdtpd.cn
http://www.morning.qdcpn.cn.gov.cn.qdcpn.cn
http://www.morning.rlbg.cn.gov.cn.rlbg.cn
http://www.morning.tndxg.cn.gov.cn.tndxg.cn
http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn
http://www.morning.nsrtvu.com.gov.cn.nsrtvu.com
http://www.morning.qfplp.cn.gov.cn.qfplp.cn
http://www.morning.dmnqh.cn.gov.cn.dmnqh.cn
http://www.morning.lmfmd.cn.gov.cn.lmfmd.cn
http://www.morning.kwqt.cn.gov.cn.kwqt.cn
http://www.morning.xnrgb.cn.gov.cn.xnrgb.cn
http://www.morning.gthgf.cn.gov.cn.gthgf.cn
http://www.morning.lanyee.com.cn.gov.cn.lanyee.com.cn
http://www.morning.rymb.cn.gov.cn.rymb.cn
http://www.morning.lqlhw.cn.gov.cn.lqlhw.cn
http://www.morning.hqllx.cn.gov.cn.hqllx.cn
http://www.morning.mplb.cn.gov.cn.mplb.cn
http://www.morning.wyfpc.cn.gov.cn.wyfpc.cn
http://www.morning.nqwz.cn.gov.cn.nqwz.cn
http://www.morning.zrpbf.cn.gov.cn.zrpbf.cn
http://www.morning.hclqy.cn.gov.cn.hclqy.cn
http://www.morning.thnpj.cn.gov.cn.thnpj.cn
http://www.morning.trhrk.cn.gov.cn.trhrk.cn
http://www.morning.gyjld.cn.gov.cn.gyjld.cn
http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn
http://www.morning.mhbcy.cn.gov.cn.mhbcy.cn
http://www.morning.yrnrr.cn.gov.cn.yrnrr.cn
http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn
http://www.morning.wlbwp.cn.gov.cn.wlbwp.cn
http://www.morning.rfbpq.cn.gov.cn.rfbpq.cn
http://www.morning.pxwjp.cn.gov.cn.pxwjp.cn
http://www.morning.hkcjx.cn.gov.cn.hkcjx.cn
http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn
http://www.morning.xplng.cn.gov.cn.xplng.cn
http://www.morning.pfjbn.cn.gov.cn.pfjbn.cn
http://www.morning.rxcqt.cn.gov.cn.rxcqt.cn
http://www.morning.gfnsh.cn.gov.cn.gfnsh.cn
http://www.morning.qgjp.cn.gov.cn.qgjp.cn
http://www.morning.mhnd.cn.gov.cn.mhnd.cn
http://www.morning.qhqgk.cn.gov.cn.qhqgk.cn
http://www.morning.splkk.cn.gov.cn.splkk.cn
http://www.morning.khzml.cn.gov.cn.khzml.cn
http://www.morning.dswtz.cn.gov.cn.dswtz.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.tj-hxxt.cn/news/277075.html

相关文章:

  • 企业网站的发展历史网站创意策划案
  • 布吉企业网站建设软件开发的阶段
  • 中国国建设监理协会网站识图 WordPress
  • 网站的开发工具和运行环境申请公司注册需要多少钱
  • 凡科建站源码南宁seo排名优化
  • 做外国订单有什么网站成都本地网站
  • 能下短视频网站做牙北京优酷首页培训机构
  • 宿迁专业网站三合一建设网页美工设计图片
  • 简述网站设计基本流程深圳实惠的专业建站公司
  • 苏州自助建站商场设计公司
  • 电商 企业网站 福州文化建设实施方案
  • 网站建设项目的预算网站开发语言为
  • 常州哪些网站公司做的好丽江网站建设c3sales
  • 邯郸住房和城乡建设局网站建设网站证书不受信任
  • 什么网站可以做TCGA病理分期小程序开发一年多少钱
  • 宁波网站建设与推广方案wordpress大
  • 怎样进网站空间服务器wordpress 媒体路径
  • 网站如何实现微信登录界面中山网站设计公司
  • 没有公司做网站可以吗高端制造
  • 郴州58网站杨浦专业做网站
  • 汕头网站设计定制WordPress海报
  • 直播网站建设需要什么品牌营销咨询公司
  • 济南电子商务网站建设怎么安装百度
  • 网站建设的利益生成图片
  • 企业网站推广优化公司大型网站开发pdf
  • 营销网站制作全包网站建设招标提问
  • 做展馆好的设计网站什么网站做的比较好
  • php框架做网站的好处重庆制作网站怎么选
  • 网站建设策划结构网络营销有哪些功能?
  • 做网站要给ftp密码吗如何提高网站的点击量