嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
ssm配置文件
一 spring springMVC mybatis=ssm
1. 构建一个mevn工程
1.更改mevn默认路径
2.访问的路径:localhost:8080/项目名称/…/main
2. 在pom中配置相应的架包
{
1.<!-- 设置Maven编译器采用的JDK版本 -->
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
2.依赖管理
<!-- 项目依赖的jar -->
<dependencies>
<!-- JSTL -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Spring -->
3.<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
4.<!-- MyBatis Spring插件 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
5.<!-- Druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.14</version>
</dependency>
6.<!-- MySQL JDBC驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
}
3. 新建app.properties文件
(1构建数据库连接对象
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/cqeec?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
jdbc.username=root
jdbc.password=
jdbc.initialSize=2
jdbc.maxActive=10
jdbc.minIdle=3)
4. 新建applicationContext.xml文件{
前缀
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
1.<!-- 加载参数配置文件 -->
<context:property-placeholder
location="classpath:app.properties" />
2.<!-- 配置Spring托管的Bean -->
<context:component-scan
base-package="com.cqeec.ams.bll"></context:component-scan>
3.<!-- 配置数据源 -->
<!-- 整合MyBatis -->
<!-- 配置MBatis的SQL会话工厂 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 所有实体对应的Mapper.xml文件 -->
<property name="mapperLocations"
value="classpath:com/cqeec/ams/dal/**/*Mapper.xml">
</property>
<!-- 注册MyBatis所有实体类的类型别名(以类名作为别名) -->
<property name="typeAliasesPackage" value="com.cqeec.ams.dml"></property>
</bean>
<!-- MyBatis Mapper接口扫描配置器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.cqeec.ams.dal" />
</bean>
<!-- 配置事务 -->
<!-- 1.配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 2.配置通知 -->
<tx:advice id="txAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 3.切面配置 -->
<aop:config>
<!-- 配置切入点 -->
<aop:pointcut
expression="execution(* com.cqeec.ams.bll..*.*(..))" id="txPointcut" />
<!-- 将切入点与通知整合 -->
<aop:advisor advice-ref="txAdvice"
pointcut-ref="txPointcut" />
</aop:config>
}
5. 对web.Xml文件的配置{
<!-- 配置Spring监听器的需要的上下文配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置Spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置SpringMVC -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:ams-springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
}
6. springmvc的配置{
头
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
springmvc的注解
<mvc:annotation-driven />
<!-- 控制器扫描 -->
<context:component-scan
base-package="com.cqeec.ams.pcl"></context:component-scan>
<!-- JSP视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
}
#//\u6CE8\u610F\u8FD9\u91CC\u4E0D\u8981\u7528INFO\uFF0CDEBUG\u7B49 \u6539\u4E2A\u540D\u5B57
log4j.rootLogger=infoA,errorA,stdout,DEBUGA
#\u8FC7\u6EE4\u6389spring\u6846\u67B6\u4E0B\u7684\u989D\u5916\u65E5\u5FD7
log4j.category.org.springframework = WARN
#\u8F93\u51FA\u5230\u63A7\u5236\u53F0
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Threshold = debug
log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c{1}:%L - %m%n
#\u8F93\u51FAerror\u5230\u6307\u5B9A\u6587\u4EF6
log4j.logger.errorA=error
log4j.appender.errorA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorA.layout=org.apache.log4j.PatternLayout
log4j.appender.errorA.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.errorA.datePattern=yyyy-MM-dd'.log'
log4j.appender.errorA.Threshold = error
log4j.appender.errorA.append=true
log4j.appender.error.File=d:/log/error.log
#\u8F93\u51FADEBUG\u4FE1\u606F\u5230\u6307\u5B9A\u6587\u4EF6
log4j.logger.DEBUGA=DEBUG
log4j.appender.DEBUGA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUGA.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUGA.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUGA.datePattern=yyyy-MM-dd'.log'
log4j.appender.DEBUGA.Threshold = DEBUG
log4j.appender.DEBUGA.append=true
log4j.appender.DEBUGA.File=d:/log/debug_log.log
#\u6253\u5370sql\u8BED\u53E5
log4j.logger..com.ibatis=DEBUG
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
从数据库中获取树形菜单
验证码
@RequestMapping("/getVerifyCode")
public void generate(HttpServletResponse response, HttpSession session) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
String verifyCodeValue = drawImg(output);
session.setAttribute("verifyCodeValue", verifyCodeValue);
try {
ServletOutputStream out = response.getOutputStream();
output.writeTo(out);
} catch (IOException e) {
e.printStackTrace();
}
}
Random rm ;
private static final int WIDTH = 200;
private static final int HEIGHT = 30;
/**
* 绘画验证码
*
* @param output
* @return
*/
private String drawImg(ByteArrayOutputStream output) {
String code = "";
// 随机产生4个字符
for (int i = 0; i < 4; i ) {
code = randomChar();
}
int width = 70;
int height = 25;
BufferedImage bi = new BufferedImage(width, height,
BufferedImage.TYPE_3BYTE_BGR);
Font font = new Font("Times New Roman", Font.PLAIN, 20);
// 调用Graphics2D绘画验证码
Graphics2D g = bi.createGraphics();
g.setFont(font);
Color color = new Color(66, 2, 82);
g.setColor(color);
g.setBackground(new Color(226, 226, 240));
g.clearRect(0, 0, width, height);
FontRenderContext context = g.getFontRenderContext();
Rectangle2D bounds = font.getStringBounds(code, context);
double x = (width - bounds.getWidth()) / 2;
double y = (height - bounds.getHeight()) / 2;
double ascent = bounds.getY();
double baseY = y - ascent;
g.drawString(code, (int) x, (int) baseY);
g.dispose();
try {
ImageIO.write(bi, "jpg", output);
} catch (IOException e) {
e.printStackTrace();
}
return code;
}
/**
* 随机参数一个字符
*
* @return
*/
private char randomChar() {
rm= new Random();
String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789";
return s.charAt(rm.nextInt(s.length()));
}
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有mvc控制器 -->
<mvc:mapping path="/**"/>
<!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在
LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) -->
<mvc:exclude-mapping path="/admin/zhu" />
<mvc:exclude-mapping path="/admin/main" />
<bean class="com.zl.csmsUtil.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有mvc控制器 -->
<mvc:mapping path="/**"/>
<!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在
LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) -->
<mvc:exclude-mapping path="/admin/checkCode" />
<mvc:exclude-mapping path="/admin/main" />
<bean class="com.zl.csmsUtil.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
package com.zl.csmsUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object handler)
throws Exception {
HttpSession session = arg0.getSession();
//String uri = request.getRequestURI(); // 获取登录的uri,这个是不进行拦截的
//if(session.getAttribute("LOGIN_USER")!=null || uri.indexOf("system/login")!=-1) {// 说明登录成功 或者 执行登录功能
if(session.getAttribute("admin")!=null) {
// 登录成功不拦截
return true;
}else {
// 拦截后进入登录页面
arg1.sendRedirect(arg0.getContextPath() "/admin/main");
return false;
}
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
短信验证
// 短信应用 SDK AppID
int appid = 1400209640; // SDK AppID 以1400开头
// 短信应用 SDK AppKey
String appkey = "c5d64e609b9f2d45ce97299a8e73e8cd";
// 需要发送短信的手机号码
String phoneNumbers = "15696575266";
// 短信模板 ID,需要在短信应用中申请
int templateId = 7839; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
// 签名
String smsSign = "腾讯云";// NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请
try {
SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
SmsSingleSenderResult result = ssender.send(0, "86", phoneNumbers,
"【腾讯云】您的验证码是: 5678", "", "");
System.out.println(result);
} catch (HTTPException e) {
// HTTP 响应码错误
e.printStackTrace();
} catch (JSONException e1) {
// JSON 解析错误
e1.printStackTrace();
} catch (IOException e2) {
// 网络 IO 错误
e2.printStackTrace();
}
transferto()方法,是springmvc封装的方法,用于图片上传时,把内存中图片写入磁盘
String sqlPath = null;
//定义文件保存的本地路径
//String localPath="D:\\";
String localpath=request.getServletContext().getRealPath("/");
//定义 文件名
String filename=null;
if(!usermod.getFile().isEmpty()){
//生成uuid作为文件名称
String uuid = UUID.randomUUID().toString().replaceAll("-","");
//获得文件类型(可以判断如果不是图片,禁止上传)
String contentType=usermod.getFile().getContentType();
//获得文件后缀名
String suffixName=contentType.substring(contentType.indexOf("/") 1);
//得到 文件名
filename=uuid "." suffixName;
System.out.println(filename);
//文件保存路径
String img="img/";
usermod.getFile().transferTo(new File(localpath img filename));
//把图片的相对路径保存至数据库
sqlPath = "/img/" filename;
System.out.println(sqlPath);
Xxxxx Locales地域信息
Xxx分页
/**
* 分页方法
*
* @param account
* @return
*/
@RequestMapping("/page")
@ResponseBody
public Map<String, Object> page(@RequestParam("page") int pageNumber, @RequestParam("rows") int pageSize) {
Map<String, Object> map = new HashMap<String, Object>();
int ys = (pageNumber - 1)*pageSize;
List<Account> list = accountService.list(ys, pageSize);
int sum = accountService.count();
System.out.println("总数:" sum "页数" ys "大小" pageSize);
map.put("total", sum);
map.put("rows", list);
return map;
}