极环境搭建:Spring + SpringMVC + MyBatis + JSON + RESTFUL风格 + 其他
(1)导入相关jar以及依赖
略,,,
(2)配置文件的配置:
① web.xml配置:
<!-- springMVC核心控制器 -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定springMVC配置文件路径 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/mvc.xml</param-value>
</init-param>
<!-- 设置在tomcat启动创建控制器 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!-- 指定所有的springMVC控制器访问以.do结尾 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 编码设置,spring自带的过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 设置请求编码格式 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!-- 开启响应设置编码 -->
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
<!-- spring工厂初始化监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 标明加载spring工厂的配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml</param-value>
</context-param>
② mvc.xml
<!-- 扫描注解:控制器层 -->
<context:component-scan base-package="com. controller"/>
<!—访问路径映射注解、响应转化json替换-->
<mvc:annotation-driven>
<!-- 转换json格式 -->
<mvc:message-converters>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!—静态资源处理-->
<mvc:default-servlet-handler/>
或者:
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/img/" mapping="/img/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>
<!-- 视图解析器:前缀、后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 上传文件配置:id固定 -->
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
<property name="maxUploadSize" value="100000000"></property>
</bean>
③ applicationContext.xml/beans.xml/spring.xml配置:
<!-- 扫描注解 -->
<context:component-scan base-package="com ">
<!—不扫描controller-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan
<!-- 引入小配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 创建数据源 -->
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<property name="driverClassName" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</bean>
<!-- 创建sqlSessionFactory -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:com /mapper/*Mapper.xml"/>
<property name="typeAliasesPackage" value="com.entity"/>
</bean>
<!-- 创建dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
<property name="basePackage" value="com.dao"/>
</bean>
<!-- 声明式事务控制 -->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="dataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 事务控制注解生效 -->
<tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
④ 小配置文件:db.properties
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/cmfz
mysql.username=root
mysql.password=root
…
⑤ DaoMapper.xml
<mapper namespace="com.dao.UserDao">
<select id="getUser" resultType="User">
select * from admin whiere id = #{id}
</select>
</mapper>
⑥ Controller
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
@Qualifier(“userServiceImpl”)
private UserService userService;
@RequestMapping("login")
public String login(){
return "index"; //跳转到/index.jsp,在配置中配置了前缀和后缀
}
@RequestMapping("/getUser/{userId}") //REST风格接受参数和响应JSON对象
public @ResponseBody User getUser(@PathVariable(userId) String id){
return userService.getUser(id)
}
/*文件上传时的代码:
try {
String realPath = session.getServletContext().getRealPath("/upload/img");
File file = new File(realPath);
if(!file.exists()){
file.mkdirs();
}
String originalFilename = fileName.getOriginalFilename();
String name = new Date().getTime()+"_"+originalFilename;
fileName.transferTo(new File(realPath,name));
map.put("mess", "上传成功");
} catch (Exception e) {
e.printStackTrace();
map.put("mess", "上传失败");
}
//音频上传---------------------------------------------
(1)导入jar:jaudiotagger-2.0.3.jar
(2)代码处理:
File audioFile = new File(filePath); //通过音频路径读取
audioFile.getSize();//获取大小,单位字节(B),除以1024为KB
AudioFile read = AudioFileIO.read(audioFile);
AudioHeader audioHeader = read.getAudioHeader();
audioHeader.getTrackLength(); //获取时长,单位为秒(s)
//音频上传---------------------------------------------
页面请求下载时可用window.location
*/
}
⑦ service实现类:
@Service
@Transactional//事务的管理
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Override
public User getUser() {
User user = userDao.getUser();
return user;
}
}