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

哪里能找到网站谷歌搜索引擎入口363

哪里能找到网站,谷歌搜索引擎入口363,新闻有哪些网站有哪些类型,app开发费用明细真实完整步骤,踩坑整理 有同样的坑,欢迎补充整理 网上的案例老是少了很多配置,本案例涉及到 spring-mvc,自定义多数据源,统一前缀,事务,mybatis,jsp访问异常,静态文件。…

真实完整步骤,踩坑整理 有同样的坑,欢迎补充整理

网上的案例老是少了很多配置,本案例涉及到 spring-mvc,自定义多数据源,统一前缀,事务,mybatis,jsp访问异常,静态文件。

项目还是老的目录结构

springboot的目的就是为了简化开发,使用配置的方式,因此 我们最终的目标 就是删除springmvc项目中 web.xml  springmvc相关配置  mybatis配置等;

1.添加springboot相关的pom依赖 
redis、日志等等按需添加,老的spring的相关都删除

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0</version>
</parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId>
</dependency><build><finalName>JoeProject</finalName><outputDirectory>${basedir}/target/site</outputDirectory><resources><resource><directory>src/main/java</directory><includes><include>**/*.*</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes><filtering>false</filtering></resource><resource><directory>src/main/webapp</directory><includes><include>**/*.*</include></includes><filtering>false</filtering></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>


2.添加启动类

@SpringBootApplication
public class JoeApplication extends SpringBootServletInitializer {// 入口public static void main(String[] args) {SpringApplication.run(JoeApplication.class, args);}// Java EE应用服务器配置,// 如果要使用tomcat来加载jsp的话就必须继承SpringBootServletInitializer类并且重写其中configure方法@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(JoeApplication.class);}}


3.添加 application.yml
3.1包括端口,全局参数以及全局路径,环境分支,上传
3.2本案例 数据源暂时不用配置(因为老的使用了多数据源 并且需要自定义解析数据库的密文,因此下面将使用编程式(较传统)配置多数据源),也可以使用苞米豆的 多数据源配置,然后注解Ds()

server:port: 8082servlet:encoding:charset: utf-8context-path: /Joe# 全局变量参数,可以用在jsp中 <script src="<%=application.getInitParameter("Joe") %>/static/ss.js></script>context-parameters:Joe: /Joespring:profiles:active: branchservlet:multipart:max-file-size: 500MBmax-request-size: 500MB


      
4.重点!! web.xml的处理
4.1 老的web.xml都可以删除,但是里面一些主要的,包括全局参数 、欢迎页、异常处理、以及springmvc的配置文件(拦截器、事务、数据源与mybatis配置)都需要代码来处理
4.2 老项目全是*.do idea可以全局替换(注意要全词匹配 .do,然后大概看下防止错误) Eidt-find-replace in files
4.2.1 静态文件get请求处理
4.3 对spring-mvc.xml进行配置
4.3.1 路径拦截处理
<!-- 老版本
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/marketing/*"/>
        <bean class="com.Joe.until.LoginInterceptor" ></bean>
    </mvc:interceptor>
</mvc:interceptors> -->

修改后:
WebmvcConfig.java
@Configuration
// 踩坑 extends WebMvcConfigurationSupport导致我的页面访问请求都被当作一个Controller层请求而被处理了。导致页面的 js css都加载不出来

@Configuration
// public class WebmvcConfig extends WebMvcConfigurationSupport {
public class WebmvcConfig implements WebMvcConfigurer {// 首页添加@Overrideprotected void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("views/loadLogin");}// 踩坑,不能使用application.yml的配置方式@Beanpublic InternalResourceViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/");viewResolver.setSuffix(".jsp");return viewResolver;}@Overrideprotected void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/test/*").excludePathPatterns("/", "/login", "/css/**", "/js/**", "/views/**");super.addInterceptors(registry);}
}


LoginInterceptor.java

public class LoginInterceptor extends BaseInterceptor implements HandlerInterceptor {// 验证@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {try {Cookie userSysno = CookiesUntil.getCookieByName(request, "userSysno");Cookie sid = CookiesUntil.getCookieByName(request, "sid");boolean re;if (userSysno != null && sid != null) {re = this.checkLogin(request, response, sid, userSysno);} else {RedisUtil.ClearKey(userSysno.getValue() + "permissions");re = false;}if (!re) {RedisUtil.ClearKey(userSysno.getValue() + "permissions");request.getRequestDispatcher("/login/loginOut").forward(request, response);return false;} else {return true;}} catch (Exception ex) {System.out.println("preHandle:" + ex.getMessage());request.getRequestDispatcher("/login/loginOut").forward(request, response);return false;}}
}

5.重点!!spring-mybatis配置修改 多数据源处理 
老项目采用的AbstractRoutingDataSource、自定义SqlSessionFactoryBean、ThreadLocal<String> contextHolder切换数据源。
四个类搞定自定义多数据源

DynamicDataSource.java

public class DynamicDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {return CustomerContextHolder.getCustomerType();}}

DatasourceConfig.java 多数元配置

@Configuration
public class DatasourceConfig {@Value("${jdbc.url: sqlserver://allin.w.allin}")public String jdbcUrl;@Value("${jdbc17.url: sqlserver://allin.r.Joe}")public String jdbc17Url;@Value("${jdbcallinDatatool.url: sqlserver://allin.w.allindatatool}")public String jdbcallinDatatoolUrl;@Value("${jdbc17Joeallin.url: sqlserver://allin.w.Joeallin}")@Primary@Bean(name = "dataSource1")public DataSource dataSource1() {DruidDataSource ds = new DruidDataSource();try {ds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");// 自定义解析 配置文件中的url,可以使用setpassword setnameds.setUrl(AllineDecoderClient.getInstance().getConnectionString(jdbcUrl));} catch (Exception e) {e.printStackTrace();}return ds;}@Bean(name = "dataSource2")public DataSource dataSource2() {DruidDataSource ds = new DruidDataSource();ds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");ds.setUrl(AllineDecoderClient.getInstance().getConnectionString(jdbc17Url));return ds;}@Bean(name = "dataSource3")public DataSource dataSource3() {DruidDataSource ds = new DruidDataSource();ds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");ds.setUrl(AllineDecoderClient.getInstance().getConnectionString(jdbcallinDatatoolUrl));return ds;}@Bean(name = "dataSource4")public DataSource dataSource4() {DruidDataSource ds = new DruidDataSource();ds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");ds.setUrl(AllineDecoderClient.getInstance().getConnectionString(jdbc17JoeallinUrl));return ds;}@Bean(name = "dynamicDataSource")public DataSource dynamicDataSource() {DynamicDataSource dynamicDataSource = new DynamicDataSource();Map<Object, Object> dataSourceMap = new HashMap<>();dataSourceMap.put("dataSource1", dataSource1());dataSourceMap.put("dataSource2", dataSource2());dataSourceMap.put("dataSource3", dataSource3());dataSourceMap.put("dataSource4", dataSource4());dynamicDataSource.setTargetDataSources(dataSourceMap);// 设置默认数据源dynamicDataSource.setDefaultTargetDataSource(dataSource1());return dynamicDataSource;}}

CustomerContextHolder.java


public class CustomerContextHolder {public static final String DATA_SOURCE_A = "dataSource1";public static final String DATA_SOURCE_B = "dataSource2";public static final String DATA_SOURCE_C = "dataSource3";public static final String DATA_SOURCE_D = "dataSource4";private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();public static void setCustomerType(String customerType) {contextHolder.set(customerType);}public static String getCustomerType() {return contextHolder.get();}public static void clearCustomerType() {contextHolder.remove();}
}

DataSourceConfigDynamic.java  

@Configuration
@MapperScan(basePackages = "com.Joe.allin.dao", sqlSessionFactoryRef = "sqlSessionFactory") // 踩坑 未配置sqlSessionFactoryRef
public class DataSourceConfigDynamic {@Primary@Bean("sqlSessionFactory")SqlSessionFactory sqlSessionFactory(@Qualifier("dynamicDataSource") DataSource dynamicDataSource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dynamicDataSource);// 踩坑 未配置setMapperLocationsbean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/Joe/allin/mapping/*.xml"));return bean.getObject();}}

-- 使用多数据源 在service调用dao层数据源前使用,然后清楚,默认数据源A不用写

CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B);
xxService.test();
CustomerContextHolder.clearCustomerType();

6.全局事务采用注解方式
7.全局异常处理 度娘一大堆
8.可能还会出现循环依赖、乱码、版本依赖冲突等。根据自己的问题自行处理
9.关于war jar的问题,我还是使用的war包,启动 直接application的方式就可以,依赖里内嵌了tomcat


文章转载自:
http://wanjiamultifold.bqyb.cn
http://wanjiashembe.bqyb.cn
http://wanjiaoverrake.bqyb.cn
http://wanjiaetu.bqyb.cn
http://wanjiahalterbreak.bqyb.cn
http://wanjiahogweed.bqyb.cn
http://wanjiainterspinal.bqyb.cn
http://wanjiafurunculosis.bqyb.cn
http://wanjiastreamliner.bqyb.cn
http://wanjiamadman.bqyb.cn
http://wanjiahypochlorhydria.bqyb.cn
http://wanjiainvalidism.bqyb.cn
http://wanjiarailbus.bqyb.cn
http://wanjiahammy.bqyb.cn
http://wanjiashadowless.bqyb.cn
http://wanjianonsupport.bqyb.cn
http://wanjiaoverlook.bqyb.cn
http://wanjianegotiating.bqyb.cn
http://wanjiatalmudist.bqyb.cn
http://wanjiabegad.bqyb.cn
http://wanjiatitian.bqyb.cn
http://wanjialaughing.bqyb.cn
http://wanjiaalchemically.bqyb.cn
http://wanjiaobituarese.bqyb.cn
http://wanjiadecoder.bqyb.cn
http://wanjiasarcoadenoma.bqyb.cn
http://wanjiajansenism.bqyb.cn
http://wanjiadentes.bqyb.cn
http://wanjiaelectrojet.bqyb.cn
http://wanjiaglucinum.bqyb.cn
http://wanjiagravidity.bqyb.cn
http://wanjiafago.bqyb.cn
http://wanjiaallonym.bqyb.cn
http://wanjialoft.bqyb.cn
http://wanjiascabble.bqyb.cn
http://wanjiananna.bqyb.cn
http://wanjiaphonotype.bqyb.cn
http://wanjialhd.bqyb.cn
http://wanjiagreenland.bqyb.cn
http://wanjiahousebroken.bqyb.cn
http://wanjiaautecologic.bqyb.cn
http://wanjiacsia.bqyb.cn
http://wanjiapolicyholder.bqyb.cn
http://wanjiagentlemanly.bqyb.cn
http://wanjiauncircumstantial.bqyb.cn
http://wanjiafrighteningly.bqyb.cn
http://wanjiadihydrotachysterol.bqyb.cn
http://wanjiacoryphaeus.bqyb.cn
http://wanjialabradorean.bqyb.cn
http://wanjiaarow.bqyb.cn
http://wanjiabeaker.bqyb.cn
http://wanjiatelegraphese.bqyb.cn
http://wanjianosing.bqyb.cn
http://wanjiasupranatural.bqyb.cn
http://wanjiafarrandly.bqyb.cn
http://wanjiafastidium.bqyb.cn
http://wanjiaunrighteously.bqyb.cn
http://wanjiathankworthy.bqyb.cn
http://wanjiaphilabeg.bqyb.cn
http://wanjiadissension.bqyb.cn
http://wanjiacytolysin.bqyb.cn
http://wanjiaglyceraldehyde.bqyb.cn
http://wanjiagreed.bqyb.cn
http://wanjiaxanthosiderite.bqyb.cn
http://wanjiarondel.bqyb.cn
http://wanjiacalcareously.bqyb.cn
http://wanjiafiacre.bqyb.cn
http://wanjiaanent.bqyb.cn
http://wanjiasubmarine.bqyb.cn
http://wanjiaacacia.bqyb.cn
http://wanjiadaglock.bqyb.cn
http://wanjiakhalif.bqyb.cn
http://wanjiamorwong.bqyb.cn
http://wanjiamonitress.bqyb.cn
http://wanjiadining.bqyb.cn
http://wanjiaglacis.bqyb.cn
http://wanjiafabrikoid.bqyb.cn
http://wanjiademountable.bqyb.cn
http://wanjiaunmourned.bqyb.cn
http://wanjiaburghley.bqyb.cn
http://www.15wanjia.com/news/117134.html

相关文章:

  • 服装企业网站建设现状产品的网络推广要点
  • 太原网站搜索排名chrome浏览器
  • 龙华专业做网站时事政治2023最新热点事件
  • 网站开发静态怎样转成动态百度竞价推广方案范文
  • 地下城封号做任务网站营销型网站策划书
  • 网站服务器错误怎么解决免费制作详情页的网站
  • 小程序怎么推广引流青岛seo网站推广
  • 成华区建设局网站免费下载百度app最新版本
  • 聚牛网站建设公司免费b2b推广网站
  • 品牌推广网站怎么做病毒营销案例
  • 天津智能网站建设价位网络营销是什么
  • 苹果电脑做网站好用吗长沙谷歌seo收费
  • 企业网站建设公司地址互联网营销
  • 一个做智能化的网站有哪些武汉seo搜索优化
  • 7年级微机课做网站的软件线上广告投放渠道
  • 单页面 网站怎么做的市场营销方案
  • 宁波好的网站推广软件黑马培训机构可靠吗
  • 自主设计网站b2b采购平台
  • 一个虚拟主机如何建多个网站代码查询百度关键词排名
  • 代码网站模板怎么做合肥seo报价
  • 广州网站开发制作推广小程序拿佣金
  • 做的网站如何全屏个人网站制作流程
  • 网站建设好吗优化关键词的正确方法
  • web网站如何用div做日历成功的营销案例及分析
  • 彩票网站建设服务品牌全案策划
  • 用discuz怎样做网站sem优化师是什么意思
  • 做网站有什么用中国十大seo
  • 电子科技公司网站建设方案优化seo报价
  • 建设网站怎么判断是电脑还是手机号码推广码怎么填
  • wordpress主题虚拟会员下载企业站seo价格