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

便宜建站方法网页logo设计图片

便宜建站方法,网页logo设计图片,网站需备案吗,网站是什么时候开始的一、SpringMVC简介 1、什么是MVC MVC 是一种软件架构的思想#xff0c;将软件按照模型、视图、控制器来划分 M #xff1a; Model #xff0c;模型层#xff0c;指工程中的 JavaBean #xff0c;作用是处理数据 JavaBean 分为两类#xff1a; 一类称为实体类Bean将软件按照模型、视图、控制器来划分 M Model 模型层指工程中的 JavaBean 作用是处理数据 JavaBean 分为两类 一类称为实体类Bean专门存储业务数据的如 Student、User 等 一类称为业务处理 Bean指 Service 或 Dao 对象专门用于处理业务逻辑和数据访问。 V View 视图层指工程中的 html 或 jsp 等页面作用是与用户进行交互展示数据 C Controller 控制层指工程中的 servlet 作用是接收请求和响应浏览器 MVC 的工作流程 用户通过视图层发送请求到服务器在服务器中请求被 Controller 接收 Controller 调用相应的Model 层处理请求处理完毕将结果返回到 Controller Controller 再根据请求处理的结果找到相应的View 视图渲染数据后最终响应给浏览器 2、什么是SpringMVC SpringMVC 是 Spring 的一个后续产品是 Spring 的一个子项目 SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust 、 WebWork 、 Strust2 等诸多产品的历代更迭之后目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首选方案 。 注三层架构分为表述层或表示层、业务逻辑层、数据访问层表述层表示前台页面和后台 servlet 3、SpringMVC的特点   Spring 家族原生产品与 IOC 容器等基础设施无缝对接 基于原生的Servlet通过了功能强大的前端控制器DispatcherServlet对请求和响应进行统一 处理 表述层各细分领域需要解决的问题全方位覆盖提供全面解决方案 代码清新简洁大幅度提升开发效率 内部组件化程度高可插拔式组件即插即用想要什么功能配置相应组件即可 性能卓著尤其适合现代大型、超大型互联网项目要求 二、HelloWorld 1、开发环境 IDE idea  构建工具 maven3.5.4 服务器 tomcat Spring 版本 5.3.1 2、创建maven工程 a 添加 web 模块 b 打包方式 war c 引入依赖 packagingwar/packagingdependencies!-- SpringMVC --dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.24/version/dependency!-- 日志 --dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.11/version/dependency!-- ServletAPI --dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/versionscopeprovided/scope/dependency!-- Spring5和Thymeleaf整合包 --dependencygroupIdorg.thymeleaf/groupIdartifactIdthymeleaf-spring5/artifactIdversion3.0.15.RELEASE/version/dependency/dependencies 3、配置web.xml 注册 SpringMVC 的前端控制器 DispatcherServlet a 默认配置方式 此配置作用下 SpringMVC 的配置文件默认位于 WEB-INF 下默认名称为 servlet-name- servlet.xml 例如以下配置所对应 SpringMVC 的配置文件位于 WEB-INF 下文件名为 springMVC-servlet.xml ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--配置SpringMVC的前端控制器对浏览器发送的请求进行统一处理--servletservlet-nameSpringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class/servletservlet-mappingservlet-nameSpringMVC/servlet-name!--设置springMVC的核心控制器所能处理的请求的请求路径/所匹配的请求可以是/login或.html或.js或.css方式的请求路径但是/不能匹配.jsp请求路径的请求/*指所有文件--url-pattern//url-pattern/servlet-mapping /web-app b 扩展配置方式 可通过 init-param 标签设置 SpringMVC 配置文件的位置和名称通过 load-on-startup 标签设置 SpringMVC 前端控制器 DispatcherServlet 的初始化时间 ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--配置SpringMVC的前端控制器对浏览器发送的请求进行统一处理--servletservlet-nameSpringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class!--配置SpringMVC配置文件的位置和名称--init-param!-- contextConfigLocation为固定值 --param-namecontextConfigLocation/param-name!-- 使用classpath:表示从类路径查找配置文件例如maven工程中的src/main/resources --param-valueclasspath:springMVC.xml/param-value/init-param!--作为框架的核心组件在启动过程中有大量的初始化操作要做而这些操作放在第一次请求时才执行会严重影响访问速度因此需要通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时--load-on-startup1/load-on-startup/servletservlet-mappingservlet-nameSpringMVC/servlet-name!--设置springMVC的核心控制器所能处理的请求的请求路径/所匹配的请求可以是/login或.html或.js或.css方式的请求路径但是/不能匹配.jsp请求路径的请求/*指所有文件--url-pattern//url-pattern/servlet-mapping /web-app 注 url-pattern 标签中使用 / 和 /* 的区别 / 所匹配的请求可以是 /login 或 .html 或 .js 或 .css 方式的请求路径但是 / 不能匹配 .jsp 请求路径的请求 因此就可以避免在访问jsp 页面时该请求被 DispatcherServlet 处理从而找不到相应的页面 /* 则能够匹配所有请求例如在使用过滤器时若需要对所有请求进行过滤就需要使用 /* 的写法 4、创建请求控制器  由于前端控制器对浏览器发送的请求进行了统一的处理但是具体的请求有不同的处理过程因此需要创建处理具体请求的类即请求控制器 请求控制器中每一个处理请求的方法成为控制器方法 因为 SpringMVC 的控制器由一个 POJO 普通的 Java 类担任因此需要通过 Controller 注解将其标识 为一个控制层组件交给 Spring 的 IoC 容器管理此时 SpringMVC才能够识别控制器的存在 Controller public class HelloController { } 5、创建springMVC的配置文件 !--扫描组件--context:component-scan base-packagecom.atguigu.mvc.controller/!-- 配置Thymeleaf视图解析器 --bean idviewResolver classorg.thymeleaf.spring5.view.ThymeleafViewResolverproperty nameorder value1/property namecharacterEncoding valueUTF-8/property nametemplateEnginebean classorg.thymeleaf.spring5.SpringTemplateEngineproperty nametemplateResolverbean classorg.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver!-- 视图前缀 --property nameprefix value/WEB-INF/templates//!-- 视图后缀 --property namesuffix value.html/property nametemplateMode valueHTML5/property namecharacterEncoding valueUTF-8//bean/property/bean/property/bean!--处理静态资源例如html、js、css、jpg若只设置该标签则只能访问静态资源其他请求则无法访问此时必须设置mvc:annotation-driven/解决问题--mvc:default-servlet-handler/!-- 开启mvc注解驱动 --mvc:annotation-drivenmvc:message-converters!-- 处理响应中文内容乱码 --beanclassorg.springframework.http.converter.StringHttpMessageConverterproperty namedefaultCharset valueUTF-8 /property namesupportedMediaTypeslistvaluetext/html/valuevalueapplication/json/value/list/property/bean/mvc:message-converters/mvc:annotation-driven /beans 6、测试HelloWorld a 实现对首页的访问 在请求控制器中创建处理请求的方法 Controller public class HelloController {// /-- /WEB-INF/templates/index.html// RequestMapping注解处理请求和控制器方法之间的映射关系// RequestMapping注解的value属性可以通过请求地址匹配请求/表示的当前工程的上下文路径// localhost:8080/springMVC/RequestMapping(/)public String index(){//返回视图名称return index;} } b 通过超链接跳转到指定页面 在主页 index.html 中设置超链接 !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8title首页/title /head body h1欢迎进入首页/h1 a th:href{/target}访问目标页面target.html/a /body /html 在请求控制器中创建处理请求的方法 Controller public class HelloController {// /-- /WEB-INF/templates/index.html// RequestMapping注解处理请求和控制器方法之间的映射关系// RequestMapping注解的value属性可以通过请求地址匹配请求/表示的当前工程的上下文路径// localhost:8080/springMVC/RequestMapping(/)public String index(){//返回视图名称return index;}RequestMapping(/target)public String toTarget(){return target;} } 7、总结 浏览器发送请求若请求地址符合前端控制器的url-pattern该请求就会被前端控制器 DispatcherServlet处理。前端控制器会读取SpringMVC的核心配置文件通过扫描组件找到控制器将请求地址和控制器中RequestMapping注解的value属性值进行匹配若匹配成功该注解所标识的控制器方法就是处理请求的方法。处理请求的方法需要返回一个字符串类型的视图名称该视图名称会被视图解析器解析加上前缀和后缀组成视图的路径通过Thymeleaf对视图进行渲染最终转发到视图所对应页面 三、RequestMapping注解 1、RequestMapping注解的功能 从注解名称上我们可以看到 RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来建立映射关系。 SpringMVC 接收到指定的请求就会来找到在映射关系中对应的控制器方法来处理这个请求。 2、RequestMapping注解的位置 RequestMapping 标识一个类设置映射请求的请求路径的初始信息 RequestMapping 标识一个方法设置映射请求请求路径的具体信息 Controller RequestMapping(/hello) public class RequestMappingController {RequestMapping(/testRequestMapping)public String success(){return success;} }index.html: !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8title首页/title /head body h1欢迎你好啊/h1 a th:href{/hello/testRequestMapping}测试RequestMapping注解的位置/abr /body /html 3、RequestMapping注解的value属性 RequestMapping 注解的 value 属性通过请求的请求地址匹配请求映射 RequestMapping 注解的 value 属性是一个字符串类型的数组表示该请求映射能够匹配多个请求地址所对应的请求 RequestMapping 注解的 value 属性必须设置至少通过请求地址匹配请求映射 a th:href{/testRequestMapping}测试RequestMapping注解的value位置--testRequestMapping/abr a th:href{/test}测试RequestMapping注解的value位置--test/abr Controller //RequestMapping(/hello) public class RequestMappingController {RequestMapping(value {/testRequestMapping,/test})public String success(){return success;} } 4、RequestMapping注解的method属性 RequestMapping 注解的 method 属性通过请求的请求方式 get 或 post 匹配请求映射 RequestMapping 注解的 method 属性是一个 RequestMethod 类型的数组表示该请求映射能够匹配多种请求方式的请求 若当前请求的请求地址满足请求映射的 value 属性但是请求方式不满足 method 属性则浏览器报错 405 Request method POST not supported a th:href{/test}测试RequestMapping注解的method属性--GET/abrform th:action{/test} methodpostinput typesubmit value测试RequestMapping注解的method属性--》POST/ /form 当不指定method方法时get和post请求都可以 Controller //RequestMapping(/hello) public class RequestMappingController {RequestMapping(value {/testRequestMapping,/test},)public String success(){return success;} }当指定时只能使用指定的请求方式 Controller //RequestMapping(/hello) public class RequestMappingController {RequestMapping(value {/testRequestMapping,/test},method {RequestMethod.GET,RequestMethod.POST})public String success(){return success;} } 注 1 、对于处理指定请求方式的控制器方法 SpringMVC 中提供了 RequestMapping 的派生注解 处理 get 请求的映射 --GetMapping 处理 post 请求的映射 --PostMapping 处理 put 请求的映射 --PutMapping 处理 delete 请求的映射 --DeleteMapping 2 、常用的请求方式有 get post put delete 但是目前浏览器只支持 get 和 post 若在 form 表单提交时为 method 设置了其他请求方式的字符串put 或 delete 则按照默认的请求方式 get 处理 若要发送 put 和 delete 请求则需要通过 spring 提供的过滤器 HiddenHttpMethodFilter 在 RESTful 部分会讲到 1.  GetMapping(/testGEtMapping)public String testGEtMapping(){return success;} a th:href{/testGEtMapping}测试GetMapping注解--/testGetMapping/abr 2 . RequestMapping(value /testPut,method RequestMethod.PUT)public String testPut(){return success;} form th:action{/testPut} methodputinput typesubmit value测试form表单是否能够发送Put或delete请求方式/ /form 5、RequestMapping注解的params属性 RequestMapping 注解的 params 属性通过请求的请求参数匹配请求映射 RequestMapping 注解的 params 属性是一个字符串类型的数组可以通过四种表达式设置请求参数和请求映射的匹配关系 param 要求请求映射所匹配的请求必须携带 param 请求参数 !param 要求请求映射所匹配的请求必须不能携带 param 请求参数 paramvalue 要求请求映射所匹配的请求必须携带 param 请求参数且 paramvalue param!value 要求请求映射所匹配的请求必须携带 param 请求参数但是 param!value a th:href{/testParamsAndHeaders(usernameadmin,password123456)}测试RequestMapping注解的params属性/a RequestMapping(value /testParamsAndHeaders,params {username,password123456})public String testParamsAndHeaders(){return success;} 注 若当前请求满足 RequestMapping 注解的 value 和 method 属性但是不满足 params 属性此时 页面回报错400 Parameter conditions username, password!123456 not met for actual request parameters: username{admin}, password{123456} 6、RequestMapping注解的headers属性 RequestMapping 注解的 headers 属性通过请求的请求头信息匹配请求映射 RequestMapping 注解的 headers 属性是一个字符串类型的数组可以通过四种表达式设置请求头信息和请求映射的匹配关系 header 要求请求映射所匹配的请求必须携带 header 请求头信息 !header 要求请求映射所匹配的请求必须不能携带 header 请求头信息 headervalue 要求请求映射所匹配的请求必须携带 header 请求头信息且 headervalue header!value 要求请求映射所匹配的请求必须携带 header 请求头信息且 header!value 若当前请求满足 RequestMapping 注解的 value 和 method 属性但是不满足 headers 属性此时页面显示404 错误即资源未找到 RequestMapping(value /testParamsAndHeaders,params {username,password123456},headers {Hostlocalhost:8080})public String testParamsAndHeaders(){return success;} a th:href{/testParamsAndHeaders(usernameadmin,password123456)}测试RequestMapping注解的params属性/a 7、SpringMVC支持ant风格的路径 模糊匹配 表示任意的单个字符 * 表示任意的 0 个或多个字符 ** 表示任意的一层或多层目录 注意在使用 ** 时只能使用 /**/xxx 的方式 // 表示任意的单个字符// *表示任意的0个或多个字符// **表示任意的一层或多层目录// 注意在使用**时只能使用/**/xxx的方式RequestMapping(/a?a/testAnt) // RequestMapping(/a*a/testAnt) // RequestMapping(/**/testAnt)public String testAnt(){return success;} a th:href{/a.a/testAnt}测试RequestMapping可以匹配ant风格的路径--?/abr 8、SpringMVC支持路径中的占位符重点 原始方式 /deleteUser?id1 rest 方式 /deleteUser/1 SpringMVC 路径中的占位符常用于 RESTful 风格中当请求路径中将某些数据通过路径的方式传输到服务器中就可以在相应的RequestMapping 注解的 value 属性中通过占位符 {xxx} 表示传输的数据在通过PathVariable 注解将占位符所表示的数据赋值给控制器方法的形参 a th:href{/testPath/111/123456}测试RequestMapping支持路径中的占位符--/testPath/abr RequestMapping(/testPath/{id}/{password})public String testPath(PathVariable(id) Integer id,PathVariable(password) String password){System.out.println(idid,passwordpassword);return success;} 输出id111,password123456 四、SpringMVC获取请求参数 1、通过ServletAPI获取 将 HttpServletRequest 作为控制器方法的形参此时 HttpServletRequest 类型的参数表示封装了当前请求的请求报文的对象 a th:href{/testServletAPI(usernameadmin,password123456)}测试使用servletAPI获取请求参数/a RequestMapping(/testServletAPI)//形参位置的request表示当前请求public String testServletAPI(HttpServletRequest request){String username request.getParameter(username);String password request.getParameter(password);System.out.println(username:username,password:password);return success;} 输出结果username:admin,password:123456 2、通过控制器方法的形参获取请求参数 在控制器方法的形参位置设置和请求参数同名的形参当浏览器发送请求匹配到请求映射时在 DispatcherServlet中就会将请求参数赋值给相应的形参 a th:href{/testParam(usernameadmin,password123456)}测试使用控制器的形参获取请求参数/abr RequestMapping(/testParam)public String testParamm(String username,String password){System.out.println(username:username,password:password);return success;} 输出结果username:admin,password:123456  form th:action{/testParam} methodget用户名input typetext nameusernamebr密码input typepassword namepasswordbr爱好input typecheckbox namehobby valueaainput typecheckbox namehobby valuebbinput typecheckbox namehobby valueccinput typecheckbox namehobby valueddbrinput typesubmit value测试使用控制器的形参获取请求参数 /form RequestMapping(/testParam)public String testParamm(String username,String password,String[] hobby){//若请求所传输的请求参数中有多个同名的请求参数此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数//若使用字符串数组类型的形参此参数的数组中包含了每一个数据//若使用字符串类型的形参此参数的值为每个数据中间使用逗号拼接的结果System.out.println(username:username,password:password,hobby: Arrays.toString(hobby));return success;} 注 若请求所传输的请求参数中有多个同名的请求参数此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数 若使用字符串数组类型的形参此参数的数组中包含了每一个数据 若使用字符串类型的形参此参数的值为每个数据中间使用逗号拼接的结果 3、RequestParam RequestParam 是将请求参数和控制器方法的形参创建映射关系 RequestParam 注解一共有三个属性 value 指定为形参赋值的请求参数的参数名 required 设置是否必须传输此请求参数默认值为 true form th:action{/testParam} methodget用户名input typetext nameuser_namebr密码input typepassword namepass_wordbr爱好input typecheckbox namehobby valueaainput typecheckbox namehobby valuebbinput typecheckbox namehobby valueccinput typecheckbox namehobby valueddbrinput typesubmit value测试使用控制器的形参获取请求参数 /form RequestMapping(/testParam)public String testParamm(RequestParam(user_name) String username, RequestParam(pass_word) String password, String[] hobby){//若请求所传输的请求参数中有多个同名的请求参数此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数//若使用字符串数组类型的形参此参数的数组中包含了每一个数据//若使用字符串类型的形参此参数的值为每个数据中间使用逗号拼接的结果System.out.println(username:username,password:password,hobby: Arrays.toString(hobby));return success;} 若设置为 true 时则当前请求必须传输 value 所指定的请求参数若没有传输该请求参数且没有设置 defaultValue属性则页面报错 400 Required String parameter xxx is not present 若设置为 false 则当前请求不是必须传输 value 所指定的请求参数若没有传输则注解所标识的形参的值为 null defaultValue不管required 属性值为 true 或 false 当 value 所指定的请求参数没有传输或传输的值 为 时则使用默认值为形参赋值 RequestMapping(/testParam)public String testParamm(RequestParam(value user_name,required false,defaultValue helloWorld) String username, RequestParam(pass_word) String password, String[] hobby){//若请求所传输的请求参数中有多个同名的请求参数此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数//若使用字符串数组类型的形参此参数的数组中包含了每一个数据//若使用字符串类型的形参此参数的值为每个数据中间使用逗号拼接的结果System.out.println(username:username,password:password,hobby: Arrays.toString(hobby));return success;} 4、RequestHeader RequestHeader 是将请求头信息和控制器方法的形参创建映射关系 RequestHeader 注解一共有三个属性 value 、 required 、 defaultValue 用法同 RequestParam RequestMapping(/testParam)public String testParamm(RequestParam(value user_name,required false,defaultValue helloWorld) String username,RequestParam(pass_word) String password,String[] hobby,RequestHeader(value Host,required true,defaultValue zxc)String host){//若请求所传输的请求参数中有多个同名的请求参数此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数//若使用字符串数组类型的形参此参数的数组中包含了每一个数据//若使用字符串类型的形参此参数的值为每个数据中间使用逗号拼接的结果System.out.println(username:username,password:password,hobby: Arrays.toString(hobby));System.out.println(host:host);return success;} 5、CookieValue CookieValue 是将 cookie 数据和控制器方法的形参创建映射关系 CookieValue 注解一共有三个属性 value 、 required 、 defaultValue 用法同 RequestParam RequestMapping(/testParam)public String testParamm(RequestParam(value user_name,required false,defaultValue helloWorld) String username,RequestParam(pass_word) String password,String[] hobby,RequestHeader(value Host,required true,defaultValue zxc)String host,CookieValue(JSESSIONID)String JSESSIONID){//若请求所传输的请求参数中有多个同名的请求参数此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数//若使用字符串数组类型的形参此参数的数组中包含了每一个数据//若使用字符串类型的形参此参数的值为每个数据中间使用逗号拼接的结果System.out.println(username:username,password:password,hobby: Arrays.toString(hobby));System.out.println(host:host);System.out.println(JSESSIONID:JSESSIONID);return success;} 6、通过POJO获取请求参数 可以在控制器方法的形参位置设置一个实体类类型的形参此时若浏览器传输的请求参数的参数名和实体类中的属性名一致那么请求参数就会为此属性赋值 form th:action{/testpojo} methodpost用户名input typetext nameusernamebr密码input typepassword namepasswordbr性别input typeradio namesex value男男input typeradio namesex value女女br年龄input typetext nameagebr邮箱input typetext nameemailbrinput typesubmit value使用实体类接收请求参数 /form User: public class User {private Integer id;private String username;private String password;private Integer age;private String sex;private String email;public User(){}public User(Integer id, String username, String password, Integer age, String sex, String email) {this.id id;this.username username;this.password password;this.age age;this.sex sex;this.email email;}//get,set,toString方法 } RequestMapping(/testpojo)public String testPojo(User user){System.out.println(user);return success;} 输出结果 User{idnull, username?????????, password123321, age24, sex??·, email1234} 但是会出现乱码现象 7、解决获取请求参数的乱码问题 解决获取请求参数的乱码问题可以使用 SpringMVC 提供的编码过滤器 CharacterEncodingFilter 但是必须在web.xml 中进行注册 !--配置springMVC的编码过滤器--filterfilter-nameCharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-paraminit-paramparam-nameforceResponseEncoding/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-nameCharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping 注 SpringMVC 中处理编码的过滤器一定要配置到其他过滤器之前否则无效 乱码有get请求乱码和post请求乱码。 get请求乱码时Tomcat引起的可以一次行解决在Tomcat文件server.xml中添加URIEncodingUTF-8即可。 post请求乱码需要我们自己配置而且 编码的过滤器一定要配置到其他过滤器之前否则无效
http://www.zqtcl.cn/news/444963/

相关文章:

  • 网站虚拟主机1gwordpress自定义头像插件
  • 网站建设的栏目策划长沙网站制作价
  • h5商城网站怎么建立建设银行网站号
  • 养殖舍建设网站网站设计建设流程图
  • 麦包包的网站建设分析陕西城乡建设部网站
  • 网站测评必须做灯笼制作手工简单又漂亮
  • 购物网站建设的意义与目的wordpress 插件 加速
  • 大型html5浅蓝色网站设计公司dede模板网店怎么开店详细教程
  • 一个阿里云怎么做两个网站吗樱花16q808a
  • 如何利用服务器做网站网站建设朝阳
  • 比邻店网站开发企查查企业信息查询在线
  • 家乡网站建设策划案专业建设专题网站
  • 网站建设公司挣钱吗wordpress评论内容密码保护
  • 上海专业建站最低价网站程序模板
  • 蚌埠网站建设哪家好创客贴官网
  • php网站建设参考文献wordpress 头像 很慢
  • 大连seo网站推广phpcmsv9手机网站源码
  • 公司做推广做网站好还是俄文网站引擎
  • 上海市建设咨询协会网站asp网站源码
  • 大家都在哪些网站上做医药招商wordpress po文件
  • 国外主题网站兰州app
  • 建设项目自主验收公示网站dedecms英文外贸网站企业模板下载
  • 做网站要服务器吗前端企业网站开发
  • 用html写一个个人介绍多网站怎么做seo
  • 做网站打广告犯法吗中国建设投资集团 网站首页
  • 怎么免费申请个人网站职业技能培训有哪些
  • 小型的企业网站湖南备案网站建设方案书
  • 现在做网站公司seo怎么做教程
  • asp化妆品网站windows优化大师有必要安装吗
  • 网站流量分析系统制作图片网站