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

做企业网站用什么程序闵行做网站公司铝棒易站公司

做企业网站用什么程序,闵行做网站公司铝棒易站公司,娄底本地做寄生虫网站,湖北网站推广技巧1. Spring MVC 全注解开发 文章目录 1. Spring MVC 全注解开发2. web.xml 文件 的替代2.1 Servlet3.0新特性2.2 编写 WebAppInitializer 3. Spring MVC的配置3.1 Spring MVC的配置#xff1a;开启注解驱动3.2 Spring MVC的配置#xff1a;视图解析器3.3 Spring MVC的配置开启注解驱动3.2 Spring MVC的配置视图解析器3.3 Spring MVC的配置开启默认Servlet处理3.4 Spring MVC的配置视图控制器 view-controller3.5 Spring MVC的配置异常处理器3.6 Spring MVC 的配置拦截器 4. 运行测试5. 总结6. 最后 2. web.xml 文件 的替代 2.1 Servlet3.0新特性 Servlet3.0新特性web.xml文件可以不写了。 在Servlet3.0的时候规范中提供了一个接口 服务器在启动的时候会自动从容器中找 ServletContainerInitializer接口的实现类自动调用它的 onStratup() 方法来完成 Servlet 上下文的初始化。 在Spring3.1版本的时候提供了这样一个类实现以上的接口 它的核心方法如下 可以看到在服务器启动的时候它会去加载所有实现 WebApplicationInitializer 接口的类 这个接口下有一个子类是我们需要的 AbstractAnnotationConfigDispatcherServletInitializer 当我们编写类继承AbstractAnnotationConfigDispatcherServletInitializer之后web服务器在启动的时候会根据它来初始化Servlet上下文。 2.2 编写 WebAppInitializer 以下这个类就是用来代替web.xml文件的 注意加上 Configuration 注解表示 标记该类是配置类注意加上 Configuration 注解表示标记该类是配置类 package com.rainbow.springmvc.config;import jakarta.servlet.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.web.filter.CharacterEncodingFilter; import org.springframework.web.filter.HiddenHttpMethodFilter; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;// 在这个配置类当中编写的其实就是 web.xml 文件中的配置 // 用来标注这个类当中的配置文件 Configuration // 表示该类是配置类 public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {/*** Spring 的配置* return*/Overrideprotected Class?[] getRootConfigClasses() {return new Class[]{SpringMvcConfig.class};}/*** 配置过滤器* return*/Overrideprotected Filter[] getServletFilters() {// 配置字符编码过滤器CharacterEncodingFilter characterEncodingFilter new CharacterEncodingFilter();characterEncodingFilter.setEncoding(UTF-8);characterEncodingFilter.setForceRequestEncoding(true);characterEncodingFilter.setForceRequestEncoding(true);// 配置 HiddenHttpMethodFilter ???HiddenHttpMethodFilter hiddenHttpMethodFilter new HiddenHttpMethodFilter();return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter};}/*** Spring MVC 的配置** return*/Overrideprotected Class?[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}/*** 用来配置 DispatcherServlet 的 url-pattern/url-pattern*用于配置 DispatcherServlet 的映射路径* return*/Overrideprotected String[] getServletMappings() {return new String[]{/};} } 3. Spring MVC的配置 命名一个名为 SpringMvcConfig 的类作为 Spring MVC 的配置类。 // 指定该类是一个配置类可以当配置文件使用 Configuration // 开启组件扫描 ComponentScan(com.rainbow.springmvc.controller) public class SpringMVCConfig { }在springmvc.xml 文件中都可以配置什么 * 1.组件扫描 * 2.视图解析器 * 3.静态资源处理 default-servlet-handler * 4.视图控制器 view-controller * 5.开启注解驱动 * 6.异常处理器 * 7.拦截器3.1 Spring MVC的配置开启注解驱动 在类上使用 EnableWebMvc 注解表示开启注解驱动。 // 以下相当于是 Springmvc.xml 的配置文件 Configuration // 表示该类是配置类 指定该类是一个配置类可以当配置文件使用 // 开启组件扫描 ComponentScan(com.rainbow.springmvc.controller) // 开启注解驱动 EnableWebMvc public class SpringMvcConfig { 3.2 Spring MVC的配置视图解析器 import com.rainbow.springmvc.interceptors.MyInterceptor; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring6.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver;import java.util.List; import java.util.Properties;// 以下相当于是 Springmvc.xml 的配置文件 Configuration // 表示该类是配置类 指定该类是一个配置类可以当配置文件使用 // 开启组件扫描 ComponentScan(com.rainbow.springmvc.controller) // 开启注解驱动 EnableWebMvc public class SpringMvcConfig {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic ITemplateResolver templateResolver(ApplicationContext applicationContext) {SpringResourceTemplateResolver resolver new SpringResourceTemplateResolver();resolver.setApplicationContext(applicationContext);resolver.setPrefix(/WEB-INF/thymeleaf/);resolver.setSuffix(.html);resolver.setTemplateMode(TemplateMode.HTML);resolver.setCharacterEncoding(UTF-8);resolver.setCacheable(false);//开发时关闭缓存改动即可生效。发布的时候则将其开启即可return resolver;} }3.3 Spring MVC的配置开启默认Servlet处理 让SpringMVCConfig类实现这个接口WebMvcConfigurer 并且重写以下的方法 Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable(); }import com.rainbow.springmvc.interceptors.MyInterceptor; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring6.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver;import java.util.List; import java.util.Properties;// 以下相当于是 Springmvc.xml 的配置文件 Configuration // 表示该类是配置类 指定该类是一个配置类可以当配置文件使用 // 开启组件扫描 ComponentScan(com.rainbow.springmvc.controller) // 开启注解驱动 EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic ITemplateResolver templateResolver(ApplicationContext applicationContext) {SpringResourceTemplateResolver resolver new SpringResourceTemplateResolver();resolver.setApplicationContext(applicationContext);resolver.setPrefix(/WEB-INF/thymeleaf/);resolver.setSuffix(.html);resolver.setTemplateMode(TemplateMode.HTML);resolver.setCharacterEncoding(UTF-8);resolver.setCacheable(false);//开发时关闭缓存改动即可生效。发布的时候则将其开启即可return resolver;}// 开启静态资源处理开启默认的 Servlet 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();} }3.4 Spring MVC的配置视图控制器 view-controller view-controller : 不写对应的 Controller 只需要 html页面就可以访问的配置 。只需要重写 WebMvcConfigurer 接口中的 addViewControllers(ViewControllerRegistry registry) 方法即可。 import com.rainbow.springmvc.interceptors.MyInterceptor; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring6.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver;import java.util.List; import java.util.Properties;// 以下相当于是 Springmvc.xml 的配置文件 Configuration // 表示该类是配置类 指定该类是一个配置类可以当配置文件使用 // 开启组件扫描 ComponentScan(com.rainbow.springmvc.controller) // 开启注解驱动 EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic ITemplateResolver templateResolver(ApplicationContext applicationContext) {SpringResourceTemplateResolver resolver new SpringResourceTemplateResolver();resolver.setApplicationContext(applicationContext);resolver.setPrefix(/WEB-INF/thymeleaf/);resolver.setSuffix(.html);resolver.setTemplateMode(TemplateMode.HTML);resolver.setCharacterEncoding(UTF-8);resolver.setCacheable(false);//开发时关闭缓存改动即可生效。发布的时候则将其开启即可return resolver;}// 开启静态资源处理开启默认的 Servlet 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}// 不写对应的 Controller 只需要 html页面就可以访问的配置Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController(/test).setViewName(test);} }3.5 Spring MVC的配置异常处理器 Spring MVC 的配置异常处理器只需要重写 WebMvcConfigurer 接口中的 configureHandlerExceptionResolvers(ListHandlerExceptionResolver resolvers) 方法即可。 // 配置异常处理器Overridepublic void configureHandlerExceptionResolvers(ListHandlerExceptionResolver resolvers) {// 可以配置多个异常处理器这是其中的一个SimpleMappingExceptionResolver simpleMappingExceptionResolver new SimpleMappingExceptionResolver();// 将异常处理器添加到List集合中resolvers.add(simpleMappingExceptionResolver);// 配置异常信息跳转的内容// 设置其中的 exceptionMapping 属性Properties properties new Properties();properties.setProperty(java.lang.Exception,tip);simpleMappingExceptionResolver.setExceptionMappings(properties);// 设置其中的 exceptionAttribute 属性,将错误信息添加到请求域当中simpleMappingExceptionResolver.setExceptionAttribute(e);// 将异常处理器添加到 List 集合中resolvers.add(simpleMappingExceptionResolver);}import com.rainbow.springmvc.interceptors.MyInterceptor; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring6.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver;import java.util.List; import java.util.Properties;// 以下相当于是 Springmvc.xml 的配置文件 Configuration // 表示该类是配置类 指定该类是一个配置类可以当配置文件使用 // 开启组件扫描 ComponentScan(com.rainbow.springmvc.controller) // 开启注解驱动 EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic ITemplateResolver templateResolver(ApplicationContext applicationContext) {SpringResourceTemplateResolver resolver new SpringResourceTemplateResolver();resolver.setApplicationContext(applicationContext);resolver.setPrefix(/WEB-INF/thymeleaf/);resolver.setSuffix(.html);resolver.setTemplateMode(TemplateMode.HTML);resolver.setCharacterEncoding(UTF-8);resolver.setCacheable(false);//开发时关闭缓存改动即可生效。发布的时候则将其开启即可return resolver;}// 开启静态资源处理开启默认的 Servlet 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}// 不写对应的 Controller 只需要 html页面就可以访问的配置Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController(/test).setViewName(test);}// 配置异常处理器Overridepublic void configureHandlerExceptionResolvers(ListHandlerExceptionResolver resolvers) {// 可以配置多个异常处理器这是其中的一个SimpleMappingExceptionResolver simpleMappingExceptionResolver new SimpleMappingExceptionResolver();// 将异常处理器添加到List集合中resolvers.add(simpleMappingExceptionResolver);// 配置异常信息跳转的内容// 设置其中的 exceptionMapping 属性Properties properties new Properties();properties.setProperty(java.lang.Exception,tip);simpleMappingExceptionResolver.setExceptionMappings(properties);// 设置其中的 exceptionAttribute 属性,将错误信息添加到请求域当中simpleMappingExceptionResolver.setExceptionAttribute(e);// 将异常处理器添加到 List 集合中resolvers.add(simpleMappingExceptionResolver);} }3.6 Spring MVC 的配置拦截器 Spring MVC 的配置拦截器只需要重写 WebMvcConfigurer 接口中的 addInterceptors(InterceptorRegistry registry) 方法即可。 package com.rainbow.springmvc.config;import com.rainbow.springmvc.interceptors.MyInterceptor; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring6.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver;import java.util.List; import java.util.Properties;// 以下相当于是 Springmvc.xml 的配置文件 Configuration // 表示该类是配置类 指定该类是一个配置类可以当配置文件使用 // 开启组件扫描 ComponentScan(com.rainbow.springmvc.controller) // 开启注解驱动 EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic ITemplateResolver templateResolver(ApplicationContext applicationContext) {SpringResourceTemplateResolver resolver new SpringResourceTemplateResolver();resolver.setApplicationContext(applicationContext);resolver.setPrefix(/WEB-INF/thymeleaf/);resolver.setSuffix(.html);resolver.setTemplateMode(TemplateMode.HTML);resolver.setCharacterEncoding(UTF-8);resolver.setCacheable(false);//开发时关闭缓存改动即可生效。发布的时候则将其开启即可return resolver;}// 开启静态资源处理开启默认的 Servlet 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}// 不写对应的 Controller 只需要 html页面就可以访问的配置Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController(/test).setViewName(test);}// 配置异常处理器Overridepublic void configureHandlerExceptionResolvers(ListHandlerExceptionResolver resolvers) {// 可以配置多个异常处理器这是其中的一个SimpleMappingExceptionResolver simpleMappingExceptionResolver new SimpleMappingExceptionResolver();// 将异常处理器添加到List集合中resolvers.add(simpleMappingExceptionResolver);// 配置异常信息跳转的内容// 设置其中的 exceptionMapping 属性Properties properties new Properties();properties.setProperty(java.lang.Exception,tip);simpleMappingExceptionResolver.setExceptionMappings(properties);// 设置其中的 exceptionAttribute 属性,将错误信息添加到请求域当中simpleMappingExceptionResolver.setExceptionAttribute(e);// 将异常处理器添加到 List 集合中resolvers.add(simpleMappingExceptionResolver);}// 配置拦截器Overridepublic void addInterceptors(InterceptorRegistry registry) {MyInterceptor myInterceptor new MyInterceptor();// 除了 /test 请求路径不拦截其他的路径都进行拦截处理registry.addInterceptor(myInterceptor).addPathPatterns(/**).excludePathPatterns(/test);}/*** 在springmvc.xml 文件中都可以配置什么* 1.组件扫描* 2.视图解析器* 3.静态资源处理 default-servlet-handler* 4.视图控制器 view-controller* 5.开启注解驱动* 6.异常处理器* 7.拦截器*/ } 4. 运行测试 编写对应测试的 Controller 类 编写对应测试的 Interceptor 类拦截器类 编写对应测试的 html 前端页面展示 测试拦截器 测试异常处理器 5. 总结 定义配置类用 Configuration 注解进行标注表示标记该类是配置类 WebAppInitializer 这个类就是用来代替 web.xml文件的 SpringMvcConfig 的类作为 Spring MVC 的配置类。 让SpringMVCConfig类实现这个接口WebMvcConfigurer同时重写其中的方法可以配置默认 Servlet 处理以及异常处理器拦截器 在springmvc.xml 文件中都可以配置什么 - 1.组件扫描 - 2.视图解析器 - 3.静态资源处理 default-servlet-handler - 4.视图控制器 view-controller - 5.开启注解驱动 - 6.异常处理器 - 7.拦截器 进行了异常处理后拦截器就不起作用了。 6. 最后 “在这个最后的篇章中我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底继续在其他的领域奋斗。感谢你们我们总会在某个时刻再次相遇。”
http://www.hkea.cn/news/14421531/

相关文章:

  • 重庆垫江网站建设为什么做网站能赚钱
  • 群晖如何做网站服务器柳州企业 商家应该如何做网站
  • 网站免费模版厦门住房建设局网站首页
  • 青岛百度公司总部沈阳seo顾问
  • 高度重视机关门户网站建设酒店seo是什么意思
  • 贵州省建设厅网站公众一体化平台html5做网站导航
  • 做推广可以在哪些网站发布软文程序员做网站外快
  • 台商网站建设公司黄页做网站的软件 简单易学
  • iis 新建网站seo标题关键词优化
  • 天津模板做网站微信管理系统免费版
  • 东莞网站设计定制开发谷德设计网官网
  • h5网站开发哪个好北京网页制作电话
  • 商务网站建设体会关键词优化公司推荐
  • 商城网站建设服务简述网络营销的意义
  • 做移动网站建设电商网站项目经验介绍
  • seo两个域名一个网站有影响吗重庆巴南网站制作
  • wordpress直播网站主题沈阳市建设工程质量检测中心网站
  • 制作地图的网站现有的网站开发技术
  • 做app必须有网站吗wordpress阿里云esc
  • 网站图片动态换名店面设计平面图
  • 朝青板块网站建设娄星区建设局网站
  • 企业网站导航设计代理主要干什么
  • 备案网站注意事项做机械配件的网站
  • 做相同网站违法吗荆门seo
  • 百度网站打开linux wordpress路径
  • 微网站怎么做百度关键词排名seo关键词排名优化教程
  • 男的做直播哪个网站好用vs2013做网站案例
  • 网站建设方向论文提纲全国工商登记网
  • 皋兰县城乡和住房建设局网站太原网站定制
  • 关于网站设计的论文高端的佛山网站建设