基于javaweb+mysql的ssm在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
前台:
首页展示商品信息,注册,登录,查询商品,看商品详情,添加商品至购物车,更新、删除购物车中商品信息,下订单、订单查看等操作
后台:登录,商品上架下架、商品信息修改、添加,订单查看,类型管理:商品类型新增删除以及修改查询等
前台:
后台:
技术框架
JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL Bootstrap JavaScript
基于javaweb+mysql的SSM在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)
model.addAttribute("message", "注册失败!");
}
//返回注册页面
return "register";
}
}
/**
*
*/
package com.demo.manage.action;
@Controller
@RequestMapping("/user_manager")
public class ManagerUserController {
@Autowired
private ManagerUserServiceI userService;
//跳转至登录页面
@RequestMapping("/showLoginPage")
public String showLoginPage() {
return "user/login";
}
//处理登录请求
@RequestMapping("/userLogin")
* @param session
* @param id
* @param number
* 更新购物车中商品的购物数量
*/
void updateShopcar(HttpSession session, int id, int number);
/**
* @param session
* @param id
* //删除购物车中商品的购物数量
*/
void deleteShopcar(HttpSession session, int id);
}
/**
*
*/
package com.demo.manage.service;
public interface ManagerUserServiceI {
/**
* @param loginName
* @param password
* @return
* 根据账号以及密码获取用户信息
*/
User getUserByNameAndPass(User user);
/**
* @param user
* //用户信息注册
*/
void saveUser(User user,HttpServletRequest request) throws Exception;
/**
* @param activeCode
* //用户信息激活
*/
void activeUser(String activeCode);
userMapper.saveUser(user);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
/**
*
*/
package com.demo.manage.util.filter;
/**
* *登录拦截器,如果没有登录则直接访问登录页面
*/
public class ManagerLoginInterceptor extends HandlerInterceptorAdapter {
/* (non-Javadoc)
* @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//从session中获取用户信息
User user = (User)request.getSession().getAttribute(Constant.SESSION_USER);
if(user == null ) {
request.setAttribute("tip", "您尚未登录,请登录后再进行相关操作!");
//跳转至登录页面
request.getRequestDispatcher("/WEB-INF/jsp/user/login.jsp").forward(request, response);
return false;
}else {
return true;
}
}
}
/**
*
*/
package com.demo.manage.action;
@RequestMapping(value = "/loadFirstArticleType.action", produces = {"application/json;charset=utf-8"})
public String loadFirstArticleType() {
List<ArticleType> types = articleTypeService.findAllFirstArticleType();
System.out.println("types:" + JSONArray.fromObject(types).toString());
return JSONArray.fromObject(types).toString();
}
//商品类型的添加或者修改操作
@RequestMapping("/addOrUpdate.action")
public String addOrUpdate(ArticleType type, String parentCode) {
if (type.getCode() != null && !type.getCode().equals("")) {
//进行更新商品类型操作
articleTypeService.updateArticleType(type);
} else {
//进行添加商品类型操作
articleTypeService.saveArticleType(type, parentCode);
}
return "redirect:/articleType_manager/getAll.action";
}
//删除商品类型
@RequestMapping("/deleteType.action")
public String deleteType(@Param("code") String code) {
String message = articleTypeService.deleteType(code);
return "redirect:/articleType_manager/getAll.action?message=delete success";
}
}
/**
*
*/
package com.demo.shop.service.impl;
//商品信息下架
@RequestMapping("/removeArticle.action")
public String removeArticle(Model model,Integer id) {
articleService.removeArticleById(id);
return "redirect:/article_manager/getAll.action";
}
//添加商品
@RequestMapping("/addArticle.action")
public String addArticle(MultipartFile file,String code,Article article,HttpServletRequest request) {
try {
InputStream input = file.getInputStream();
//获取项目部署路径
String realPath = request.getServletContext().getRealPath("/image/article");
//如果上传所指定的目录不存在则创建目录
File f = new File(realPath);
if(!f.exists()) {
f.mkdirs();
}
//获取当前上传的文件的名字 a.jpg
String imageName = file.getOriginalFilename();
//重新生成新的文件名
String newFileName = UUID.randomUUID().toString() + imageName.substring(imageName.lastIndexOf("."), imageName.length());
System.out.println("文件路径:"+(realPath+File.separator+newFileName));
//构建输出流
OutputStream out = new FileOutputStream(realPath+File.separator+newFileName);
byte[] data = new byte[1024];
int len = 0;
while((len = input.read(data)) != -1) {
out.write(data, 0, len);
out.flush();
}
out.close();
input.close();
//指定商品类型
article.setTypeCode(code);
@Service(value="muserService")
@Transactional
public class ManagerUserServicempl implements ManagerUserServiceI {
@Autowired
private ManagerUserMapper userMapper;
/* (non-Javadoc)
* 根据账号以及密码获取用户信息
*/
@Override
public User getUserByNameAndPass(User user) {
// TODO Auto-generated method stub
return userMapper.getUserByNameAndPass(user);
}
/* (non-Javadoc)
* //用户信息注册
*/
@Override
public void saveUser(User user,HttpServletRequest request) throws Exception {
// TODO Auto-generated method stub
user.setCreateDate(new Date());
//通过UUID生成激活码
String activeCode = UUID.randomUUID().toString();
user.setActive(activeCode);
userMapper.saveUser(user);
/*******************************邮件发送*********************************/
//1、创建 Properties对象用于封装邮件服务器相关信息
Properties props = new Properties();
// 服务器地址
OrderItem item = new OrderItem();
item.setArticleId(articleId);
item.setOrderNum(buyNum);
//订单详细记录放在集合中
items.add(item);
totalPrice += Double.valueOf(infos[2]);
}
//指定订单的总金额
order.setAmount(totalPrice);
//保存订单信息 ,保存完订单信息之后,需要获取订单的id,因为需要将订单的id存放在订单详情中
orderMapper.saveOrder(order);
//获取订单主键的值
int orderId = order.getId();
for(OrderItem item : items) {
item.setOrderId(orderId);
//保存订单明细
orderItemMapper.saveItem(item);
}
/*****************************生成支付二维码*******************************/
DataJoinUtils dataJoinUtils = new DataJoinUtils();
Map<String, String> result = dataJoinUtils.wxPay("http://localhost:8080/ecShop/article/index", order.getOrderCode(), "1", "127.0.0.1", "化妆品");
//将二维码地址封装至order对象中
order.setImgUrl(result.get("code_url"));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return order;
}
/* (non-Javadoc)
* @see com.demo.shop.service.OrderServiceI#getOrdersByUserId()
* 根据当前用户的id查询,该用户所有的订单信息
*/
@Override
public List<Order> getOrdersByUserId() {
// TODO Auto-generated method stub
//获取当前用户的信息
@Controller
@RequestMapping("/shopCar")
public class ShopCarController {
@Autowired
private ShopCarServiceI shopCarService;
@RequestMapping("/addToCar.do")
public String addShopCar(HttpSession session,@Param("id")int id,@Param("number")int number) {
shopCarService.addArticleToShopCar(session,id,number);
//商品加入购物车成功之后,立马展示购物车中的商品信息
return "redirect:/shopCar/showShopCar.do";
}
//展示购物车中的商品信息
@RequestMapping("/showShopCar.do")
public String showShopCar(HttpSession session,Model model) {
//根据用户的id获取该用户购物详情
List<Shopcar> shopCars = shopCarService.getAllShopCarByUserId(session);
model.addAttribute("shopCars", shopCars);
//定义总金额
double totalPrice = 0.0;
//遍历集合 计算购物车中商品的总金额
for(Shopcar shopcar : shopCars) {
totalPrice += shopcar.getArticle().getDiscountPrice() * shopcar.getBuynum();
}
model.addAttribute("totalPrice", totalPrice);
//跳转至展示购物车中商品信息的页面
return "shopCar";
}
//更新购物车中商品的信息
@RequestMapping("/updateShopcar.do")
public String updateShopcar(HttpSession session,@Param("id")int id,@Param("number")int number) {
//更新购物车中商品的购物数量
/**
* 定义拦截器,用于判断用户是否登录,如果用户已经登录则放行,否则用户未登录则跳转至登录页面
*/
public class LoginFilter extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//从session中获取用户信息
User user = (User)request.getSession().getAttribute("session_user");
if(user == null) {
request.setAttribute("error_message", "您尚未登录,请登录后再进行相关操作!");
//跳转至登录页面
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
return false;
}else {
return true;
}
}
}
/**
*
*/
package com.demo.shop.service;
public interface ShopCarServiceI {
/**
* @param session
* @param id
* @param number
* 将商品信息加入至购物车
*/
void addArticleToShopCar(HttpSession session, int id, int number);
}
}
/**
*
*/
package com.demo.shop.service.impl;
@Service("userService")
@Transactional
public class UserServiceImpl implements UserServiceI {
@Autowired
private UserMapper userMapper;
/* (non-Javadoc)
* //根据用户输入的账号以及密码获取用户的信息
*/
@Override
public User findUserByNameAndPass(User user) {
// TODO Auto-generated method stub
User u = userMapper.findUserByNameAndPass(user);
return u;
}
/* (non-Javadoc)
* //异步校验账号是否存在
*/
@Override
public String validLoginName(String loginName) {
// TODO Auto-generated method stub
* //用户注册
*/
@Override
public void saveUser(User user, HttpServletRequest request) {
// TODO Auto-generated method stub
try {
user.setCreateDate(new Date());
user.setDisabled("1");
userMapper.saveUser(user);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
/**
*
*/
package com.demo.manage.util.filter;
/**
* *登录拦截器,如果没有登录则直接访问登录页面
*/
public class ManagerLoginInterceptor extends HandlerInterceptorAdapter {
/* (non-Javadoc)
* @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//从session中获取用户信息
User user = (User)request.getSession().getAttribute(Constant.SESSION_USER);
if(user == null ) {
request.setAttribute("tip", "您尚未登录,请登录后再进行相关操作!");
//跳转至登录页面
request.getRequestDispatcher("/WEB-INF/jsp/user/login.jsp").forward(request, response);
return false;
}else {
return true;
}
}
}
//用户注册
@RequestMapping(value = "/userRegister")
public String userRegister(Model model, HttpServletRequest request, User user) {
try {
userService.saveUser(user, request);
model.addAttribute("message", "注册成功!");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
model.addAttribute("message", "注册失败!");
}
//返回注册页面
return "register";
}
}
/**
*
*/
package com.demo.manage.action;
@Controller
@Controller
@RequestMapping("/article_manager")
public class ManagerArticleController {
@Autowired
private ManagerArticleServiceI articleService;
@Autowired
private ManagerArticleTypeServiceI articleTypeService;
//展示首页商品信息
@RequestMapping("/getAll.action")
public String getAllArticles(Model model,String typeCode,String title,PageModel pageModel) {
//根据商品类型以及商品的标题获取商品信息
List<Article> articles = articleService.getAllArticles(typeCode,title,pageModel);
model.addAttribute("articles", articles);
model.addAttribute("pageModel", pageModel);
model.addAttribute("title", title);
model.addAttribute("typeCode", typeCode);
//获取所有的一级商品类型
List<ArticleType> articleTypes = articleTypeService.findAllFirstArticleType();
model.addAttribute("firstArticleTypes", articleTypes);
return "article/list";
}
//展示商品明细信息
@RequestMapping("/preArticle.action")
public String preArticle(Model model,Integer id) {
//根据商品的id获取商品信息
Article article = articleService.getArticleById(id);
model.addAttribute("article", article);
return "article/preArticle";
model.addAttribute("articleType", type);
return "articleType/view";
}
//加载添加商品类型页面
@RequestMapping("/showAdd.action")
public String showAdd() {
return "articleType/view";
}
//通过异步请求的方式获取所有一级商品类型
@ResponseBody
@RequestMapping(value = "/loadFirstArticleType.action", produces = {"application/json;charset=utf-8"})
public String loadFirstArticleType() {
List<ArticleType> types = articleTypeService.findAllFirstArticleType();
System.out.println("types:" + JSONArray.fromObject(types).toString());
return JSONArray.fromObject(types).toString();
}
//商品类型的添加或者修改操作
@RequestMapping("/addOrUpdate.action")
public String addOrUpdate(ArticleType type, String parentCode) {
if (type.getCode() != null && !type.getCode().equals("")) {
//进行更新商品类型操作
articleTypeService.updateArticleType(type);
} else {
//进行添加商品类型操作
articleTypeService.saveArticleType(type, parentCode);
}
// 设置消息的HTML格式的内容
msg.setContent("<a href='http://127.0.0.1:8080/"+request.getContextPath()+"/user/active?activeCode="+user.getActive()+"' target='_blank'>恭喜您注册成功,点击该链接进行激活,此邮件无需回复!</a>","text/html;charset=UTF-8");
// 设置发送人
msg.setFrom(new InternetAddress("luochunlong666@126.com"));
// 设置接收者
// 接收者类型由:TO(收件人)、CC(抄送)、BCC(密送)
msg.setRecipient(RecipientType.TO,new InternetAddress(user.getEmail()));
// 发送邮件
Transport.send(msg);
}
/* (non-Javadoc)
* @see com.demo.shop.service.UserServiceI#activeUser(java.lang.String)
* //用户信息激活
*/
@Override
public void activeUser(String activeCode) {
// TODO Auto-generated method stub
userMapper.activeUser(activeCode);
}
/* (non-Javadoc)
* 根据账号获取用户信息
*/
@Override
public String getUserByLoginName(String loginName) {
// TODO Auto-generated method stub
User user = userMapper.getUserByLoginName(loginName);
return user == null ? "not" : "exist";
}
}
/**
*
@Service("orderService")
@Transactional
public class OrderServiceImpl implements OrderServiceI {
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
/* (non-Javadoc)
* 提交订单
* #1_2_216.0#5_1_158.4 == > 1_2_216.0#5_1_158.4
*/
@Override
public Order orderSubmit(String orderInfo) {
// TODO Auto-generated method stub
//创建订单对象
Order order = new Order();
try {
String[] orderInfos = orderInfo.substring(1).split("#");
//指定下单时间
order.setCreateDate(new Date());
public String addOrUpdate(ArticleType type, String parentCode) {
if (type.getCode() != null && !type.getCode().equals("")) {
//进行更新商品类型操作
articleTypeService.updateArticleType(type);
} else {
//进行添加商品类型操作
articleTypeService.saveArticleType(type, parentCode);
}
return "redirect:/articleType_manager/getAll.action";
}
//删除商品类型
@RequestMapping("/deleteType.action")
public String deleteType(@Param("code") String code) {
String message = articleTypeService.deleteType(code);
return "redirect:/articleType_manager/getAll.action?message=delete success";
}
}
/**
*
*/
package com.demo.shop.service.impl;
model.addAttribute("message", URLDecoder.decode(message));
}
return "articleType/list";
}
//加载修改商品类型页面
@RequestMapping("/showUpdate.action")
public String showUpdate(Model model, String code) {
ArticleType type = articleTypeService.getArticleTypeByCode(code);
model.addAttribute("articleType", type);
return "articleType/view";
}
//加载添加商品类型页面
@RequestMapping("/showAdd.action")
public String showAdd() {
return "articleType/view";
}
//通过异步请求的方式获取所有一级商品类型
@ResponseBody
@RequestMapping(value = "/loadFirstArticleType.action", produces = {"application/json;charset=utf-8"})
public String loadFirstArticleType() {
List<ArticleType> types = articleTypeService.findAllFirstArticleType();
System.out.println("types:" + JSONArray.fromObject(types).toString());
return JSONArray.fromObject(types).toString();
}
//商品类型的添加或者修改操作
request.setAttribute("tip", "商品添加失败:"+e.getMessage());
}
return "redirect:/article_manager/getAll.action";
}
//跳转至修改商品信息页面
@RequestMapping("/showUpdate.action")
public String showUpdate(Model model,Integer id) {
//根据商品id获取商品信息
Article article = articleService.getArticleById(id);
model.addAttribute("article", article);
//获取所有的一级商品类型
List<ArticleType> articleTypes = articleTypeService.findAllFirstArticleType();
model.addAttribute("types", articleTypes);
return "article/updateArticle";
}
//更新商品信息
@RequestMapping("/updateArticle.action")
public String updateArticle(MultipartFile file,String code,Article article,HttpServletRequest request) {
try {
InputStream input = file.getInputStream();
//获取项目部署路径
String realPath = request.getServletContext().getRealPath("/image/article");
//如果上传所指定的目录不存在则创建目录
File f = new File(realPath);
if(!f.exists()) {
f.mkdirs();
}
//获取当前上传的文件的名字 a.jpg
String imageName = file.getOriginalFilename();
if(imageName!=null && !imageName.equals("")) {
//处理登录请求
@RequestMapping("/userLogin")
public String userLogin(User user,Model model,HttpSession session) {
User u = userService.getUserByNameAndPass(user);
if(u == null) {
//账号或密码不正确,给用户提示信息,并跳转至登录页面
model.addAttribute("tip", "您输入的账号或密码不正确请核实!");
return "user/login";
}else if("0".equals(u.getDisabled())){
model.addAttribute("tip", "您尚未激活,请激活后再进行相关操作!");
return "user/login";
}else {
//跳转至首页,并将用户的信息保存至session中
session.setAttribute(Constant.SESSION_USER, u);
return "redirect:/article_manager/getAll.action";
}
}
//用户退出
@RequestMapping("/logout")
public String logout(HttpSession session) {
//将用户的信息从session中清除
session.removeAttribute(Constant.SESSION_USER);
return "user/login";
}
//展示用户注册页面 showRegisterPage
@RequestMapping("/showRegisterPage")
public String showRegisterPage() {
return "user/register";
}
List<Shopcar> shopCars = shopCarService.getAllShopCarByUserId(session);
model.addAttribute("shopCars", shopCars);
//定义总金额
double totalPrice = 0.0;
//遍历集合 计算购物车中商品的总金额
for(Shopcar shopcar : shopCars) {
totalPrice += shopcar.getArticle().getDiscountPrice() * shopcar.getBuynum();
}
model.addAttribute("totalPrice", totalPrice);
//跳转至展示购物车中商品信息的页面
return "shopCar";
}
//更新购物车中商品的信息
@RequestMapping("/updateShopcar.do")
public String updateShopcar(HttpSession session,@Param("id")int id,@Param("number")int number) {
//更新购物车中商品的购物数量
shopCarService.updateShopcar(session,id,number);
//商品加入购物车成功之后,立马展示购物车中的商品信息
return "redirect:/shopCar/showShopCar.do";
}
//删除购物车中商品的信息
@RequestMapping("/deleteShopCar.do")
public String deleteShopCar(HttpSession session,@Param("id")int id) {
//删除购物车中商品的购物数量
shopCarService.deleteShopcar(session,id);
//商品加入购物车成功之后,立马展示购物车中的商品信息
return "redirect:/shopCar/showShopCar.do";
}
}
/**
*
*/
package com.demo.shop.controller;
*
*/
package com.demo.manage.action;
@Controller
@RequestMapping("/order_manager")
public class ManagerOrderController {
@Autowired
private ManagerOrderServiceI orderService;
//订单分页查询
@RequestMapping("/getAll.action")
public String getAll(PageModel pageModel,Model model) {
List<Order> orders = orderService.getAll(pageModel);
model.addAttribute("orders", orders);
return "order/list";
}
//确认发送订单
@RequestMapping("/checkOrder.action")
public String checkOrder(Order order) {
orderService.checkOrder(order);
return "redirect:/order_manager/getAll.action";
}
}
/**
*
*/
package com.demo.shop.filter;
/**
* @param session
* @param id
* @param number
* 将商品信息加入至购物车
*/
void addArticleToShopCar(HttpSession session, int id, int number);
/**
* @param session
* @return
* 展示购物车中的商品信息
*/
List<Shopcar> getAllShopCarByUserId(HttpSession session);
/**
* @param session
* @param id
* @param number
* 更新购物车中商品的购物数量
*/
void updateShopcar(HttpSession session, int id, int number);
/**
* @param session
* @param id
* //删除购物车中商品的购物数量
*/
void deleteShopcar(HttpSession session, int id);
}
/**
*
*/
package com.demo.manage.service;
String[] orderInfos = orderInfo.substring(1).split("#");
//指定下单时间
order.setCreateDate(new Date());
//获取session
HttpSession session = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
//从session中获取用户信息
int userId = ((User)session.getAttribute("session_user")).getId();
//指定订单属于哪一个用户
order.setUserId(userId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
//设置订单编号
order.setOrderCode("PO-"+sdf.format(new Date())+userId);
//定义订单总金额
double totalPrice = 0.0;
//创建集合用于封装订单详情信息
List<OrderItem> items = new ArrayList<>();
for(String info: orderInfos) {
String[] infos =info.split("_");
//获取商品id
int articleId = Integer.valueOf(infos[0]);
//购买数量
int buyNum = Integer.valueOf(infos[1]);
OrderItem item = new OrderItem();
item.setArticleId(articleId);
item.setOrderNum(buyNum);
//订单详细记录放在集合中
items.add(item);
totalPrice += Double.valueOf(infos[2]);
}
//指定订单的总金额
order.setAmount(totalPrice);
public void addArticleToShopCar(HttpSession session, int id, int number) {
// TODO Auto-generated method stub
//从session中获取用户信息
User user = (User)session.getAttribute("session_user");
//获取用户的id
int userId = user.getId();
//根据用户id以及商品id从购物车表中获取相关信息
Shopcar shopCar = shopcarMapper.getShopCarByUserIdAndArticleId(userId,id);
if(shopCar!=null) {
//该商品已经存在于当前用户的购车中,则进行商品数量的叠加
shopcarMapper.updateShopCar(userId,id,number);
}else {
//该商品不存在与当前用户的购物车中
shopcarMapper.addShopCar(userId,id,number);
}
}
/* (non-Javadoc)
* @see com.demo.shop.service.ShopCarServiceI#getAllShopCarByUserId(javax.servlet.http.HttpSession)
*/
@Override
public List<Shopcar> getAllShopCarByUserId(HttpSession session) {
// TODO Auto-generated method stub
//从session中获取用户信息
User user = (User)session.getAttribute("session_user");
//获取用户的id
int userId = user.getId();
//获取用户的购物详情信息
List<Shopcar> shopcars = shopcarMapper.getAllShopCarByUserId(userId);
return shopcars;
}
/* (non-Javadoc)
* //更新购物车中商品的购物数量
*/
@Override
/*******************************邮件发送*********************************/
//1、创建 Properties对象用于封装邮件服务器相关信息
Properties props = new Properties();
// 服务器地址
props.setProperty("mail.smtp.host", "smtp.126.com");
// 服务器需要鉴权
props.setProperty("mail.smtp.auth", "true");
//2、创建Authenticator的实例,实现账户、密码的鉴权。
Authenticator auth = new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("luochunlong666@126.com", "luochunlong123");
}
};
//3).获得Session实例
Session mailSession = Session.getInstance(props, auth);
//4).创建SMTPMessage,要提供session
SMTPMessage msg = new SMTPMessage(mailSession);
// 5).设置Message的内容,包括发送者、接收者、消息体
// 设置邮件标题,没有标题的邮件几乎都会被认为是垃圾邮件被系统退回。
msg.setSubject("用户注册激活邮件,请勿回复,按照指引激活");
// 设置消息的HTML格式的内容
msg.setContent("<a href='http://127.0.0.1:8080/"+request.getContextPath()+"/user/active?activeCode="+user.getActive()+"' target='_blank'>恭喜您注册成功,点击该链接进行激活,此邮件无需回复!</a>","text/html;charset=UTF-8");
// 设置发送人
msg.setFrom(new InternetAddress("luochunlong666@126.com"));
// 设置接收者
// 接收者类型由:TO(收件人)、CC(抄送)、BCC(密送)
msg.setRecipient(RecipientType.TO,new InternetAddress(user.getEmail()));
// 发送邮件
Transport.send(msg);
}
/* (non-Javadoc)
* @see com.demo.shop.service.UserServiceI#activeUser(java.lang.String)
* //用户信息激活
*/
@Override
*
*/
package com.demo.shop.service.impl;
@Service("userService")
@Transactional
public class UserServiceImpl implements UserServiceI {
@Autowired
private UserMapper userMapper;
/* (non-Javadoc)
* //根据用户输入的账号以及密码获取用户的信息
*/
@Override
public User findUserByNameAndPass(User user) {
// TODO Auto-generated method stub
User u = userMapper.findUserByNameAndPass(user);
return u;
}
/* (non-Javadoc)
* //异步校验账号是否存在
*/
@Override
public String validLoginName(String loginName) {
// TODO Auto-generated method stub
User user = userMapper.validLoginName(loginName);
if (user != null) {
return "您输入的账号已经存在!";