1.配置tomcat的时候(一般情况下,idea开发支持热部署war exploded):
要打成war包的结构,具体的设置如下:
注意:里建议写上项目的名称,因为idea启动tomcat的时候找路径的问题,要是在tomacat的server.xml的文件中写上文件的路径,这里就不用写,但是,在这里写了server.xml可写可不写,因为idea中的这个优先级要高。
文件包的区别:
file–project structure—Module:界面如下:
目标所指的文件,只能是test文件专用:如下:
步骤:
file–new–project—maven,如图:
点击next:如图
点击next,接下来如图:
直接默认点击next;
点击完成,等待生成模板,把需要下载的关于maven的jar包生成,等待完成,
完成之后配置tomcat,如下图:
这个是最后的效果图
这里推荐的打包方式是web application exploded:具体修改在 file–projectStructure–Artifacts里面设置,创建项目的时候能够自动生成,一般情况不需要修改
到此:项目搭建算是完成,接下来需要的配置文件一些东西
war:选择:web Application:archive:把当前文件夹以包的形式传到服务器上
war: exploded;选择:web application exploded:以当前文件夹的位置方式上传到服务器上 支持热部署,常用这个方式
配置文件步骤:
1.maven需要下载关于spring的一些jar包
2.web.xml:读取applicationContext.xml文件,
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
3.新建立applicationContext.xml,,这个时候因为所需要的jar包存在,所以基本不会报错,报错的话缺什么包再下载
注意:如果,手动修改了自己的文件夹的路径,尤其是weapp的话,需要编辑一下默认的路径,下面是修改的具体步骤
这样就修改成功了
redis出现的问题:
redis-creating server tcp lisening socket 0.0.0.0:6379:bind no error
解决办法:
在redist根目录:1.redis-cli.exe
2.shutdown
3.exit
4.重新启动一下
redis启动的方式(亲测有效)
1.在redis根目录下:redis-server redis.windows.conf
擦参考文件:https://www.cnblogs.com/dong-dong-1/p/8724127.html
SSM的配置文件具体有几类:
1.spring容器:application.xml
数据库常量配置:jdbc.properties
sping-mvc配置: spring-mvc.xml
mybatis配置文件:mybaties-config.xml
日志文件:logs4.xml
项目入口配置:web.xml
当然还有一写其他的插件,自己用到自己加
具体的大致配置内容:
**a.application.xml**
1. 增加约束条件
2. 开启注解扫描:
<!-- 自动扫描 -->
方式1:
<context:component-scan base-package="org.zyyd">
<!-- 扫描时跳过 @Controller 注解的JAVA类(控制器) -->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
还可以在指定的package下面扫描对应的bean
方式2:
<context:annotation-config>:注解扫描是针对已经在Spring容器里注册过的Bean
3. 加载数据库的配置信息,比如,jdbc.properties,mybaties-config.xml
例如(只是参考,可能还有其他的方式,这里只是举例子):
1.直接加载文件,需要在这个文件中都配置好,<import resource="spring-database.xml"/>
2.加载一个文件,然后补全配置
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
4. 配置sqlSessionFactory (Spring和Mybatis整合)
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 指定mybatis配置文件的位置 -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
</bean>
5.事务控制的配置
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--控制住数据源 -->
<property name="dataSource" ref="DataSource"></property>
</bean> <!--开启基于注解的事务,使用xml配置形式的事务(必要主要的都是使用配置式) -->
<aop:config>
<!-- 切入点表达式 -->
<aop:pointcut expression="execution(* cn.hfbin.crud.service..*(..))" id="txPoint"/>
<!-- 配置事务增强 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
</aop:config>
<!--配置事务增强,事务如何切入 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 所有方法都是事务方法 -->
<tx:method name="*"/>
<!--以get开始的所有方法 -->
<tx:method name="get*" read-only="true"/>
</tx:attributes>
</tx:advice>
**b.spring-mvc.xml**
1.注解只扫描controller
<!-- SpringMVC 的配置文件 ,包含网站跳转的逻辑控制器 -->
context:component-scan base-package="cn.hfbin" use-default-filters="false">
<!-- 只扫描控制器 -->
<context:component-scan base-package="org.zyyd.*.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
2.注解驱动
<!-- 能支持springmvc更高级的一些功能:JSR303校验 ,快捷的ajax ,映射动态请求-->
<mvc:annotation-driven/>
3.配置试图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
用法:
解析后缀为jsp
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />-->
<property name="viewClass"
value="org.zyyd.base.servlet.HtmlResourceView" />
<!-- 通过setter方法注入前缀 /WEB-INF/views/showMsg.jsp-->
<property name="prefix" value="/" />
<!-- 通过setter方法注入后缀 -->
<property name="suffix" value=".jsp" />
<property name="order" value="1" />
</bean>
解析后缀为html
<bean id="htmlviewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.zyyd.base.servlet.HtmlResourceView"/>
<property name="order" value="2" />
<property name="prefix" value="/"/>
<property name="suffix" value=".html" />
<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>
**c..mybatis-config.xm**l
1.设置别名
单个配置:
<typeAliases>
<typeAlias type="cn.edu.hpu.ssm.po.User" alias="user"/>
</typeAliases>
批量设置(推荐)
<typeAliases>
<package name="cn.edu.hpu.ssm.po"/>
</typeAliases>
搭建过程中遇到的问题以及解决办法
1.如果要修改webapp的路径,比如从一个文件加下面到另一个文件夹下面,则需要修改配置的路径
具体步骤如下:file--Project Structure--model--web ResSource Directories--点击右侧“+”号--直接定位到你已经修改的webpp下面,应用,ok,就可以了
2.@Autowired注解引入实体类的时候,实体类下面红线,启动报错
原因:这个是因为idea的自我配置机制,因为实体类没有加@Repository注解
具体解决办法
办法1:实体类加@Repository注解
办法2:Settings - Editor - Inspections - Spring - Spring Core - Code - Autowiring for Bean Class 勾去掉
3.web.xml中的name下面有红色波浪,启动报错
原因:这个是因为目录改动,导致web.xml错误
解决办法:file--Project Structure--model--Deployment Descriptors--点击“+”号,选择web.xml就可以了,应用,ok,就可以了
注意:个人习惯,spring扫描开启的时候,习惯扫描注解的方式
application.xml:开启扫描,并跳过controller
spring-mvc.xml: 开始注解,只扫描controller,另外加一些其他的直接开启,比如,定时任务等等
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 自动扫描 -->
<context:component-scan base-package="org.mySelfBank">
<!--扫描时跳过 @Controller 注解的JAVA类(控制器)-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--扫描配置文件(这里指向的是之前配置的那个config.properties)-->
<context:property-placeholder location="classpath:/config/*.properties" />
<!--********************************************配置database********************************************-->
<import resource="spring-database.xml"/>
</beans>
spring-mvc.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<!--开启注解 注解方式 -->
<mvc:annotation-driven>
<!--作用:不能使用匹配模式,比如想login.html 就必须是/login.html 而不能是/login.*-->
<mvc:path-matching suffix-pattern="false" />
</mvc:annotation-driven>
<!--定时任务的配置扫描包-->
<task:annotation-driven />
<context:component-scan base-package="org.mySelfBank.task" />
<!-- 只扫描Controller,不扫描Service-->
<context:component-scan base-package="org.mySelfBank.controller" >
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<!--<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<!– 启动Spring MVC的注解功能,完成请求和注解POJO的映射 –>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" lazy-init="false" >
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" />
<!– json转换器 –>
</list>
</property>
</bean>-->
<!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<!-- 通过setter方法注入后缀 -->
<property name="suffix" value=".jsp" />
<property name="order" value="1" />
</bean>
<bean id="htmlviewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="2" />
<property name="prefix" value="/"/>
<property name="suffix" value=".html" />
<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>
<!--这些配置是访问静态资源的时候,不用收到DispatcherServlet的监控,可以自由访问-->
<!-- 对静态资源文件的访问 不支持访问WEB-INF目录 -->
<mvc:default-servlet-handler />
<!--这里是对静态资源的映射-->
<mvc:resources mapping="/js/**" location="/common/" />
<mvc:resources mapping="/css/**" location="/common/" />
<mvc:resources mapping="/img/**" location="/common/" />
<mvc:resources mapping="/common/**" location="/common/" />
<mvc:resources mapping="/**" location="/" />
</beans>
ajax传值的时候,需要确定数据格式:contentType: "application/json",
并外,maven依赖需要加上jackson-databind的依赖,否则,会报415的错误