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

旅游网站建设模板wordpress手机端和pc端兼容

旅游网站建设模板,wordpress手机端和pc端兼容,鹤壁seo,一个大型网站建设得多少钱封装工具类 封装获取连接释放资源操作 在实际使用JDBC的时候#xff0c;很多操作都是固定的#xff0c;没有必要每次都去注册驱动#xff0c;获取链接对象等等。 同样#xff0c;释放资源的close操作也可以封装一下 下面是封装好的具体工具类 package com.jimihua.u…封装工具类 封装获取连接释放资源操作 在实际使用JDBC的时候很多操作都是固定的没有必要每次都去注册驱动获取链接对象等等。 同样释放资源的close操作也可以封装一下 下面是封装好的具体工具类 package com.jimihua.utils;import java.sql.*;/*** 数据库操作的一个通用的内容*/ public class DatabaseUtils {// 注册驱动的操作static{try {Class.forName(com.mysql.cj.jdbc.Driver);} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}/*** 获取Connection对象方法* return*/public static Connection getConnection() {try {Connection connection DriverManager.getConnection(jdbc:mysql://localhost:3306/jdbc_test?characterEncodingutf-8, root, root);return connection;} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(获取Connection出错!);}}/*** 针对查询操作的释放资源* param connection* param statement* param resultSet*/public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {if(resultSet null || statement null || connection null){throw new NullPointerException(参数传递的connectionstatementresultSet不允许为NULL);}try {resultSet.close();statement.close();connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}/*** 针对写操作的释放资源* param connection* param statement*/public static void closeAll(Connection connection, Statement statement) {if( statement null || connection null){throw new NullPointerException(参数传递的connectionstatementresultSet不允许为NULL);}try {statement.close();connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}} 再次迭代之前的Demo4为Demo5。 package com.jimihua;import com.jimihua.utils.DatabaseUtils;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Scanner;/*** 实现注册和登录操作* 基于SQL注入的问题在这里采用PreparedStatement来解决SQL注入问题。*/ public class Demo5 {public static void main(String[] args) throws Exception {Scanner input new Scanner(System.in);while(true){// 基于提示做具体什么操作System.out.println(当前可以选择注册或者登录);System.out.println(注册操作输入 1);System.out.println(登录操作输入 2);int i input.nextInt();// 因为无论是注册还是登录都需要用户输入用户名和密码System.out.println(请输入用户名);String username input.next();System.out.println(请输入密码);String password input.next();// 根据i执行不同的逻辑if(i 1){// 注册操作//1、获取链接Connection conn DatabaseUtils.getConnection();//2、准备注册的insert的SQLString sql insert into user (username,password) values (?,?);//3.1、拿到statementPreparedStatement ps conn.prepareStatement(sql);//3.2 给占位符赋值ps.setString(1,username);ps.setString(2,password);//4、执行SQLint count ps.executeUpdate();//5、根据返回结果基于提示if(count 1){System.out.println(注册成功);}//6、释放资源DatabaseUtils.closeAll(conn,ps);}else {// 登录操作//1、获取链接Connection conn DatabaseUtils.getConnection();//2、准备登录的查询SQLString sql select * from user where username ? and password ?;//3.1、拿到statementPreparedStatement ps conn.prepareStatement(sql);//3.2、给赋值ps.setString(1,username);ps.setString(2,password);//4、执行SQLResultSet resultSet ps.executeQuery();if (resultSet.next()){// 到这说明用户名和密码正确登录成功System.out.println(用户名和密码正确登录成功);}else{// 到这说明用户名和密码错误登录失败System.out.println(用户名和密码错误登录失败);}//5、释放资源DatabaseUtils.closeAll(conn,ps,resultSet);}}} } 跨平台方案 现在将连接数据库的urlusernamepassword都是写死在Java代码中的。 正常运行的项目需要编译成.class文件运行编译过后再想修改urlusernamepassword就挺难的。 咱们利用Hashtable的子类Properties将连接数据库的信息卸载外部的.properties文件中在Java代码里通过Properties类将外部的.properties文件的内容加载到内存里使用。 分成几步准备 第一步外部声明好一个database.properties文件编写好连接数据库的信息第二步在Java的DatabaseUtils的工具类中加载database.properties文件读取连接信息 package com.jimihua.utils;import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;/*** 数据库操作的一个通用的内容*/ public class DatabaseUtils {private static final Properties PROP new Properties();public static void main(String[] args) {DatabaseUtils db new DatabaseUtils();}// 注册驱动的操作static{try {// 优先通过PROP对象加载database.properties文件InputStream is DatabaseUtils.class.getResourceAsStream(/database.properties);PROP.load(is);Class.forName(PROP.getProperty(jdbc.driver));} catch (Exception e) {throw new RuntimeException(e);}}/*** 获取Connection对象方法* return*/public static Connection getConnection() {try {Connection connection DriverManager.getConnection(PROP.getProperty(jdbc.url),PROP.getProperty(jdbc.username),PROP.getProperty(jdbc.password));return connection;} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(获取Connection出错!);}}// 省略释放资源代码} ORM 所谓的ORM其实就是Object Relational Mapping也就是对象关系映射。 O就代表你Java中的实体类R就是你数据库中的具体表。 M就是让O和R建立一个联系。 本质的意愿咱们在操作数据库时需要用到SQL语句。ORM的愿景是希望使用面向对象的思维来和数据库交互不需要了解SQL到底是什么。这种咱们成为 完整的ORM框架 能够提供的一个效果。 User findById(1); --- select * from user where id 1; int save(User); --- insert into user (id,username,password) values (?,?,?);但是这种完整的ORM框架会让咱们程序员对SQL的把控很低现在国内主流的是一款 半自动化的ORM框架 这种ORM框架依然需要咱们写SQL语句。 而咱们不能直接干一个框架出来现在的目的 准备好对应jdbc-test库中的user表的一个实体类User类。在查询User表时将查询到的结果封装到User类中操作。 准备好实体类User package com.jimihua.entity;/*** 当前是一个实体类目的是和数据库中的关系表产生映射关系*/ public class User {// 全部的基本数据类型采用包装类因为包装类可以多存储一个NULL从而尽可能的避免出现NullPointException/** 主键Id */private Long id;/** 用户名 */private String username;/** 密码 */private String password;public User() {}public User(Long id, String username, String password) {this.id id;this.username username;this.password password;}Overridepublic String toString() {return User{ id id , username username \ , password password \ };}public Long getId() {return id;}public void setId(Long id) {this.id id;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;} } 将查询数据库表User的结果映射到User实体类中 package com.jimihua;import com.jimihua.entity.User; import com.jimihua.utils.DatabaseUtils;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;/*** 是为了完成查询user表后将user表的ResultSet结果封装到User对象中*/ public class Demo6 {public static void main(String[] args) throws SQLException {//1、获取连接对象Connection conn DatabaseUtils.getConnection();//2、准备查询user信息的SQLString sql select * from user where id ?;//3、获取PreparedStatement传入SQLPreparedStatement ps conn.prepareStatement(sql);//4、给占位符赋值ps.setLong(1,1);//5、执行SQL获取ResultSet返回结果ResultSet rs ps.executeQuery();//6、遍历ResultSet结果封装到Userwhile(rs.next()){User user new User();user.setId(rs.getLong(id));user.setUsername(rs.getString(username));user.setPassword(rs.getString(password));System.out.println(查询到的user表信息 user);}//7、释放资源DatabaseUtils.closeAll(conn, ps, rs);} } DAO数据访问对象层 DAO层专门实现和数据库交互的操作不参与任何逻辑。 DAO层单独封装出来的目的是为了达到解耦的效果也就是让咱们的程序达到一个低耦合的效果。 对同一张表的增删改查操作都封装到一个XxxDao类中。针对这个XxxDao类里提供对应的增删改查操作insert、update、delete、findById、findAll 现在就需要将XxxDaoImpl实现出来如下图 准备一个案例操作。 准备关系表 创建一张person表提供下述字段 idint类型主键自增namevarchar类型非空ageint类型非空born_datedate类型非空emailvarchar类型addressvarchar类型 create table person(id int primary key auto_increment comment 主键,name varchar(16) not null comment 名字,age int not null comment 年龄,born_date date not null comment 出生日期,email varchar(64) comment email,address varchar(256) comment 地址 );自己再准备几条测试数据 准备实体类 准备Person类映射前面构建好的person表 package com.jimihua.entity;import java.util.Date;/*** 映射jdbc_test库中的person表*/ public class Person {private Integer id;private String name;private Integer age;private Date bornDate;private String email;private String address;// 省略 无参有参toStringget/set } 准备DAO接口与实现类 先准备到PersonDao接口提供抽象方法对外提供哪些功能 package com.jimihua.dao;import com.jimihua.entity.Person;import java.util.List;/*** 构建与Person表交互的DAO层接口*/ public interface PersonDao {/*** 插入一条Person数据* param person* return*/int insert(Person person);/*** 根据Id修改person信息* param person* return*/int updateById(Person person);/*** 根据id删除一条person* param id* return*/int deleteById(Integer id);/*** 根据id查询一条person信息* param id* return*/Person findById(Integer id);/*** 查询全部person信息* return*/ListPerson findAll();} 提供Dao层对应的实现类。 package com.jimihua.dao.impl;import com.jimihua.dao.PersonDao; import com.jimihua.entity.Person; import com.jimihua.utils.DatabaseUtils;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;/*** 实现PersonDao接口实现内5个方法。*/ public class PersonDaoImpl implements PersonDao {Overridepublic int insert(Person person) throws SQLException {//1、获取连接Connection conn DatabaseUtils.getConnection();//2、编写SQL语句String sql insert into person (name,age,born_date,email,address) values (?,?,?,?,?);//3、获取PreparedStatement传入SQLPreparedStatement ps conn.prepareStatement(sql);//4、给占位符赋值ps.setString(1, person.getName());ps.setInt(2, person.getAge());ps.setDate(3,new java.sql.Date(person.getBornDate().getTime()));ps.setString(4,person.getEmail());ps.setString(5, person.getAddress());//5、执行SQL获取结果int count ps.executeUpdate();//6、释放资源DatabaseUtils.closeAll(conn,ps);//7、返回结果return count;}Overridepublic int updateById(Person person) throws SQLException {//1、获取连接Connection conn DatabaseUtils.getConnection();//2、编写SQL语句String sql update person set name?,age?,born_date?,email?,address ?where id?;//3、获取PreparedStatement传入SQLPreparedStatement ps conn.prepareStatement(sql);//4、给占位符赋值ps.setString(1, person.getName());ps.setInt(2, person.getAge());ps.setDate(3, new java.sql.Date(person.getBornDate().getTime()));ps.setString(4, person.getEmail());ps.setString(5, person.getAddress());ps.setInt(6, person.getId());//5、执行SQL获取结果int count ps.executeUpdate();//6、释放资源DatabaseUtils.closeAll(conn,ps);//7、返回结果return count;}Overridepublic int deleteById(Integer id) throws SQLException {//1、获取连接Connection conn DatabaseUtils.getConnection();//2、编写SQL语句String sql delete from person where id ?;//3、获取PreparedStatement传入SQLPreparedStatement ps conn.prepareStatement(sql);//4、给占位符赋值ps.setInt(1,id);//5、执行SQL获取结果int count ps.executeUpdate();//6、释放资源DatabaseUtils.closeAll(conn,ps);//7、返回结果return count;}Overridepublic Person findById(Integer id) throws SQLException {//1、获取连接Connection conn DatabaseUtils.getConnection();//2、编写SQL语句String sql select * from person where id ?;//3、获取PreparedStatement传入SQLPreparedStatement ps conn.prepareStatement(sql);//4、给占位符赋值ps.setInt(1,id);//5、执行SQL获取结果集ResultSetResultSet resultSet ps.executeQuery();//6、处理结果集封装数据Person person null;if(resultSet.next()){person new Person();person.setId(resultSet.getInt(id));person.setName(resultSet.getString(name));person.setAge(resultSet.getInt(age));person.setBornDate(resultSet.getDate(born_date));person.setEmail(resultSet.getString(email));person.setAddress(resultSet.getString(address));}//7、释放资源DatabaseUtils.closeAll(conn,ps,resultSet);//8、返回结果return person;}Overridepublic ListPerson findAll() throws SQLException {//1、获取连接Connection conn DatabaseUtils.getConnection();//2、编写SQL语句String sql select * from person;//3、获取PreparedStatement传入SQLPreparedStatement ps conn.prepareStatement(sql);//4、执行SQL获取结果集ResultSetResultSet rs ps.executeQuery();//5、处理结果集封装数据ListPerson personList new ArrayListPerson();while (rs.next()){Person person new Person();person.setId(rs.getInt(id));person.setName(rs.getString(name));person.setAge(rs.getInt(age));person.setBornDate(rs.getDate(born_date));person.setEmail(rs.getString(email));person.setAddress(rs.getString(address));// 记得封装完personadd到前面构建好的List集合中personList.add(person);}//6、释放资源DatabaseUtils.closeAll(conn,ps,rs);//7、返回结果return personList;} } 在main方法中测试 package com.jimihua;import java.sql.SQLException;/*** 为了测试DAO层的对象功能是否可以正常使用*/ public class Demo7 {public static void main(String[] args) throws SQLException {/*// 测试插入数据到Person表Person person new Person();person.setName(赵六);person.setAge(26);person.setBornDate(new Date());person.setEmail(jimihuagmail.com);person.setAddress(北京市海淀区北清路aaaa);// 准备Dao层对象PersonDao personDao new PersonDaoImpl();int count personDao.insert(person);System.out.println(count);*//*// 测试修改Person表中的数据Person person new Person();person.setId(4);person.setName(赵六六);person.setAge(266);person.setBornDate(new Date());person.setEmail(jimihua126.com);person.setAddress(北京市海淀区苏州街tttt);// 准备Dao层对象PersonDao personDao new PersonDaoImpl();int count personDao.updateById(person);System.out.println(count);*//*// 测试删除Person表中的数据Integer id 4;// 准备Dao层对象PersonDao personDao new PersonDaoImpl();int count personDao.deleteById(id);System.out.println(count);*//*// 测试根据Id查询Person信息Integer id 3;// 准备Dao层对象PersonDao personDao new PersonDaoImpl();Person person personDao.findById(id);System.out.println(person);*//*// 测试查询全部数据PersonDao personDao new PersonDaoImpl();ListPerson list personDao.findAll();for (Person person : list) {System.out.println(person);}*/}} 时间类型处理 现在MySQL驱动是8.0.33MySQL驱动的版本如果是8.0.23之前的版本会和现在有一些区别 在上面操作增删改查时咱们发现了一个问题。 基于PreparedStatement去给占位符设置时间类型时他需要的是java.sql.Date类型咱们不能直接基于java.util.Date因为 所以在基于ResultSet获取了一个时间类型时才会发现返回的是java.util.Date但是我可以用java.util.Date去接收明显是一个多态的效果这个是没有问题的。 咱们针对处理这些时间类型完整的来个小例子 在MySQL端咱们常用的有三种时间类型datedatetimetimestamp。 在Java端常用的时间类型基本就是java.util.Datejava.time.LocalDateTime偶尔可能也会使用字符串类型来接收时间java.lang.String 接收时间类型数据 MySQL端的时间类型采用date类型只有年月日。对应到Java中如何接收上述的三种类型。 java.util.Date 因为ResultSet返回时可以直接基于getDate获取到java.sql.Date再加上之前聊到的这两个类的关系所以可以直接接收。java.lang.String ResultSet支持将时间类型直接以String的方式返回getString可以直接拿到时间的字符串如果你想再次转换SimpleDateFormat就可以来转换。java.time.LocalDate 在使用getObject方法那MySQL中date类型时他返回的是java.sql.Date所以想获取LocalDate类型需要使用java.sql.Date提供的API也就是toLocalDate方法直接转换。 MySQL端的时间类型采用datetime类型年月日时分秒。对应到Java中如何接收上述的三种类型。 java.sql.Date 此时就不推荐使用getDate去获取MySQL中的datetime类型了发现即便datetime中有时分秒但是getDate返回的java.sql.Date拿不到时分秒。直接PASS……java.lang.String 这个木有问题依然可以正常的返回字符串类型而且年月日时分秒都可以正常的获取到。java.time.LocalDateTime 这个很舒服可以直接基于getObject方法获取到返回的类型直接就是默认的java.time.LocalDateTime不需要额外转换。但是需要记住MySQL驱动的版本需要8.0.23以上才可以。 MySQL端的时间类型采用timestamp类型年月日时分秒。对应到Java中如何接收上述的三种类型。 java.sql.Date 此时依然不推荐使用getDate去获取时间戳因为依然无法拿到时分秒…………java.lang.String 这个木有问题和datetime效果一样很舒服。java.time.LocalDateTime 这个不成在getObject方法中返回的依然是java.sql.Timestamp时间戳类型但是咱们可以手动的基于toLocalDateTime方法直接转换为LocalDateTime类型。 传入时间类型数据 在给占位符赋值时有的占位符需要赋值时间类型的字段此时Java中可以采用setDatesetStringsetObject等等方式去给占位符赋值此时是否有一些需要注意的点。 Java端采用setDate(java.sql.Date)的方式去设置时间对应MySQL端的三种时间类型需要注意什么 date 只传年月日没问题他只显示年月日~~datetime 不成因为java.sql.Date无法传递时分秒的信息PASS……timestamp 不成因为java.sql.Date无法传递时分秒的信息PASS…… Java端采用setString(java.lang.String)的方式去设置时间对应MySQL端的三种时间类型需要注意什么 date 没问题正常传递字符串只要满足格式即可 yyyy-MM-dddatetime 没问题正常传递字符串只要满足格式即可 yyyy-MM-dd HH:mm:sstimestamp 没问题正常传递字符串只要满足格式即可 yyyy-MM-dd HH:mm:ss Java端采用setObject(java.lang.Object)的方式去设置时间可以传递字符串可以传递java.util.Date也可以传递java.time.LocalDateTime。 date 没问题基本所有时间类型和字符串都认datetime 没问题基本所有时间类型和字符串都认timestamp 没问题基本所有时间类型和字符串都认
文章转载自:
http://www.morning.tkyry.cn.gov.cn.tkyry.cn
http://www.morning.zrlms.cn.gov.cn.zrlms.cn
http://www.morning.nktxr.cn.gov.cn.nktxr.cn
http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn
http://www.morning.crxdn.cn.gov.cn.crxdn.cn
http://www.morning.baohum.com.gov.cn.baohum.com
http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn
http://www.morning.mnlk.cn.gov.cn.mnlk.cn
http://www.morning.gwgjl.cn.gov.cn.gwgjl.cn
http://www.morning.kjrp.cn.gov.cn.kjrp.cn
http://www.morning.bwjgb.cn.gov.cn.bwjgb.cn
http://www.morning.gqfbh.cn.gov.cn.gqfbh.cn
http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn
http://www.morning.bnbtp.cn.gov.cn.bnbtp.cn
http://www.morning.ylmxs.cn.gov.cn.ylmxs.cn
http://www.morning.jthjr.cn.gov.cn.jthjr.cn
http://www.morning.pttrs.cn.gov.cn.pttrs.cn
http://www.morning.yxdrf.cn.gov.cn.yxdrf.cn
http://www.morning.tqbqb.cn.gov.cn.tqbqb.cn
http://www.morning.qwbls.cn.gov.cn.qwbls.cn
http://www.morning.dyght.cn.gov.cn.dyght.cn
http://www.morning.cmzgt.cn.gov.cn.cmzgt.cn
http://www.morning.pyzt.cn.gov.cn.pyzt.cn
http://www.morning.bmncq.cn.gov.cn.bmncq.cn
http://www.morning.rnxw.cn.gov.cn.rnxw.cn
http://www.morning.youngbase.cn.gov.cn.youngbase.cn
http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn
http://www.morning.zmzdx.cn.gov.cn.zmzdx.cn
http://www.morning.ycgrl.cn.gov.cn.ycgrl.cn
http://www.morning.dzfwb.cn.gov.cn.dzfwb.cn
http://www.morning.kpypy.cn.gov.cn.kpypy.cn
http://www.morning.hmmnb.cn.gov.cn.hmmnb.cn
http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn
http://www.morning.gstmn.cn.gov.cn.gstmn.cn
http://www.morning.lwtfx.cn.gov.cn.lwtfx.cn
http://www.morning.krhkn.cn.gov.cn.krhkn.cn
http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn
http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn
http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn
http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn
http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn
http://www.morning.cpmfp.cn.gov.cn.cpmfp.cn
http://www.morning.nsncq.cn.gov.cn.nsncq.cn
http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn
http://www.morning.dqkrf.cn.gov.cn.dqkrf.cn
http://www.morning.qnxzx.cn.gov.cn.qnxzx.cn
http://www.morning.wqkzf.cn.gov.cn.wqkzf.cn
http://www.morning.wyctq.cn.gov.cn.wyctq.cn
http://www.morning.lgxzj.cn.gov.cn.lgxzj.cn
http://www.morning.rmyt.cn.gov.cn.rmyt.cn
http://www.morning.frzdt.cn.gov.cn.frzdt.cn
http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn
http://www.morning.jwfkk.cn.gov.cn.jwfkk.cn
http://www.morning.cwskn.cn.gov.cn.cwskn.cn
http://www.morning.qnksk.cn.gov.cn.qnksk.cn
http://www.morning.qrndh.cn.gov.cn.qrndh.cn
http://www.morning.c7497.cn.gov.cn.c7497.cn
http://www.morning.clybn.cn.gov.cn.clybn.cn
http://www.morning.knwry.cn.gov.cn.knwry.cn
http://www.morning.jrwbl.cn.gov.cn.jrwbl.cn
http://www.morning.xywfz.cn.gov.cn.xywfz.cn
http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn
http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn
http://www.morning.dpdns.cn.gov.cn.dpdns.cn
http://www.morning.rmxgk.cn.gov.cn.rmxgk.cn
http://www.morning.czzpm.cn.gov.cn.czzpm.cn
http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn
http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn
http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn
http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn
http://www.morning.rhjsx.cn.gov.cn.rhjsx.cn
http://www.morning.zhghd.cn.gov.cn.zhghd.cn
http://www.morning.bnzjx.cn.gov.cn.bnzjx.cn
http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn
http://www.morning.wslr.cn.gov.cn.wslr.cn
http://www.morning.deanzhu.com.gov.cn.deanzhu.com
http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn
http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn
http://www.morning.gbhsz.cn.gov.cn.gbhsz.cn
http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn
http://www.tj-hxxt.cn/news/242295.html

相关文章:

  • 上高做网站公司网站推广的措施和手段有哪些
  • 网站建设策划执行网站外链建设有利于增加网站收录
  • 站群 wordpressmvc 门户网站开发框架
  • 酒店网站建设策划书濮阳公司建站
  • 物流wap网站模板电子商务专业是干什么的
  • 网站建设与管理维护 大学论文wordpress远程自动下载图片
  • 中能建设集团电子商务网站网站开发教科书
  • 做网站 用asp页面设计师招聘
  • 现在做什么网站好不参与网站建设的弊端
  • 网站建设分为哪几个步骤网站开发与设计培训的就业前景
  • 五金模具技术支持 东莞网站建设sem算网站设计吗
  • 方案图网站公司网站制作怎么弄
  • 本地佛山顺德网站建设专注手机网站建设
  • 网站设计与建设考试网站开发文案模板
  • 宁国网站设计公司企业服务app下载
  • 视频类网站开发经验设计师培训资料
  • 好网站开发cms自助建站系统
  • 卓商网站建设怎么使用网站上的模板
  • 江阴市住房和城乡建设局网站如何做招生网站
  • 网站优化 保定国际军事形势最新消息
  • 网站开发基本要求深圳微网站建设公司哪家好
  • 学做快餐在哪个网站手机网站定制咨询
  • 公司域名让做网站的电子商务网站开发实
  • 专业商城网站建设报价网站常用字体大小
  • 开源手机建站系统西安网站制作百亿科技
  • 运城网站开发网站建设实验步骤
  • 建永久网站雪锐琴网站建设
  • 网站下载链接怎么做文化产品电商网站建设规划
  • 易语言可以做网站网站欢迎页模板
  • 宠物店网站开发文档撰写南宁做网站