使用SSM+Layui+Bootstrap实现汽车维保系统的示例代码

本项目主要实现对汽车维修厂的信息化管理功能,主要包含三个角色:管理员,维修师傅,客户。实现的主要功能包含用户管理、配置管理、汽车管理、故障管理、供应商管理、配件管理、维修订单管理、统计信息、公告管理、个人信息管理。主要业务流程:用户在系统内发起汽车维修申请定单,管理员根据情况将定单分配给维修师傅,维修师傅接受任务后开始维修,并根据情况申请配件,处理完成后由管理员生成最终支付订单结算费用,客户进入系统进行费用支付,并可以查看自己相应的维修记录和费用信息等等。

技术架构:

后台开发:SSM框架

前端技术:Layui+Jquery+Ajax

数据库:MYSQL

开发工具:IDEA /Eclipse

管理员登陆系统后的主要功能:

用户管理

配件管理

供应商管理

采购管理

车辆信息管理

故障管理

维修订单管理

统计管理

公告管理

库存管理

员工登陆系统

相应的管理模块

用户登陆系统

用户相关管理模块

以上是汽车维修管理系统的部分功能展示。

系统部分核心代码;

package com.lzm.controller.admin;

import com.lzm.pojo.ApplyInfo;
import com.lzm.pojo.CarInfo;
import com.lzm.pojo.OrderInfo;
import com.lzm.pojo.UserInfo;
import com.lzm.service.Interface.OrderService;
import com.lzm.utils.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @author znz
 * @create 2021- 04- 03- 9:38
 */
@Controller
public class OrderController {
    @Autowired
    private OrderService orderService;

    @RequestMapping(value="/ShowHistoryOrders.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> ShowHistoryOrders(@RequestParam(value = "page") int page , int limit) {
        List<OrderInfo> orderInfos = orderService.ShowHistoryOrders(page,limit);
        System.out.println(orderInfos);
        //返回的总记录数
        int count=orderService.findHistoryOrdersPageCount();
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/selectHistoryOrderByName.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> selectHistoryOrderByName(@RequestParam(value = "page") int page , int limit,String contact) {
        List<OrderInfo> orderInfos = orderService.selectHistoryOrderByName(contact);
        //返回的总记录数
        int count=orderInfos.size();
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/ShowHandleOrders.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> ShowHandleOrders(@RequestParam(value = "page") int page , int limit) {
        List<OrderInfo> orderInfos = orderService.ShowHandleOrders(page,limit);
        System.out.println(orderInfos);
        //返回的总记录数
        int count=orderService.findHandleOrdersPageCount();
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/selectHandleOrderByName.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> selectHandleOrderByName(@RequestParam(value = "page") int page , int limit,String contact) {
        List<OrderInfo> orderInfos = orderService.selectHandleOrderByName(contact);
        //返回的总记录数
        int count=orderInfos.size();
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/AddOrder.action",method = RequestMethod.POST)
    @ResponseBody
    public int AddOrder(@RequestBody OrderInfo orderInfo) {
            int  a=orderService.AddOrder(orderInfo);
            return a;
    }

    @RequestMapping(value="/ShowStaffOrders.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> ShowStaffOrders(HttpSession session,@RequestParam(value = "page") int page , int limit) {
        UserInfo user = (UserInfo) session.getAttribute("user");
        String id = user.getUserid();
        List<OrderInfo> orderInfos = orderService.ShowStaffOrders(id,page,limit);
        System.out.println(orderInfos);
        //返回的总记录数
        int count=orderService.findStaffOrdersPageCount(id);
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/selectStaffOrderByName.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> selectStaffOrderByName(HttpSession session,@RequestParam(value = "page") int page , int limit,String contact) {
        UserInfo user = (UserInfo) session.getAttribute("user");
        String id = user.getUserid();
        List<OrderInfo> orderInfos = orderService.selectStaffOrderByName(id,contact);
        //返回的总记录数
        int count=orderInfos.size();
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/ShowClientOrders.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> ShowClientOrders(HttpSession session,@RequestParam(value = "page") int page , int limit) {
        UserInfo user = (UserInfo) session.getAttribute("user");
       String  id = user.getUserid();
        List<OrderInfo> orderInfos = orderService.ShowClientOrders(id,page,limit);
        System.out.println(orderInfos);
        //返回的总记录数
        int count=orderService.findClientOrdersPageCount(id);
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/selectClientOrderByName.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<OrderInfo>> selectClientOrderByName(HttpSession session,@RequestParam(value = "page") int page , int limit,String contact) {
        UserInfo user = (UserInfo) session.getAttribute("user");
        String id = user.getUserid();
        List<OrderInfo> orderInfos = orderService.selectClientOrderByName(id,contact);
        //返回的总记录数
        int count=orderInfos.size();
        PageResult<List<OrderInfo>> listPageResult=new PageResult<List<OrderInfo>>("",orderInfos,0,count);
        return listPageResult;
    }
}
package com.lzm.controller.admin;

import com.lzm.pojo.CarInfo;
import com.lzm.pojo.PartsInfo;
import com.lzm.pojo.UserInfo;
import com.lzm.service.Interface.PartService;
import com.lzm.utils.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author znz
 * @create 2021- 03- 31- 10:10
 */
@Controller
public class PartsController {
    @Autowired
    private PartService partService;

    @RequestMapping(value="/ShowAllParts.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<PartsInfo>>    ShowAllParts(@RequestParam(value = "page") int page , int limit) {
        List<PartsInfo> partsInfos = partService.selectAllPart(page,limit);
        System.out.println(partsInfos.toString());
        //返回的总记录数
        int count=partService.findPartPageCount();
        PageResult<List<PartsInfo>> listPageResult=new PageResult<List<PartsInfo>>("",partsInfos,0,count);
        return listPageResult;

    }

    @RequestMapping(value="/updatePart.action",method = RequestMethod.POST)
    @ResponseBody
    public int updateCar( @RequestBody PartsInfo  partsInfo) {
        int i = partService.updatePart(partsInfo);
        return i;
    }

    @RequestMapping(value="/selectPartByName.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<PartsInfo>> selectPartByName(@RequestParam(value = "page") int page , int limit,String plate) {
        List<PartsInfo> partsInfos = partService.selectPartByName(plate);
        //返回的总记录数
        int count=partsInfos.size();
        PageResult<List<PartsInfo>> listPageResult=new PageResult<List<PartsInfo>>("",partsInfos,0,count);
        return listPageResult;
    }

    //根据ID删除车辆
    @RequestMapping(value="/deletePart.action",method = RequestMethod.GET)
    @ResponseBody
    public int deletePart(int id) {
        int a=partService.deletePartByID(id);
        return a;
    }

    @RequestMapping(value="/AddPart.action",method = RequestMethod.POST)
    @ResponseBody
    public int AddPart(@RequestBody PartsInfo partsInfo) {
            int  a=partService.addPart(partsInfo);
            return a;
    }
}
package com.lzm.controller.admin;

import com.lzm.pojo.CarInfo;
import com.lzm.pojo.PartsInfo;
import com.lzm.pojo.PurchaseInfo;
import com.lzm.pojo.UserInfo;
import com.lzm.service.Interface.PartService;
import com.lzm.service.Interface.PurchaseService;
import com.lzm.utils.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author znz
 * @create 2021- 03- 31- 15:55
 */
@Controller
public class PurchaseController {
    @Autowired
    private PurchaseService purchaseService;
    @Autowired
    private PartService partService;

    @RequestMapping(value="/ShowAllPurchase.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<PurchaseInfo>> ShowAllPurchase(@RequestParam(value = "page") int page , int limit) {
        List<PurchaseInfo> purchaseInfos = purchaseService.selectAllPurchase(page,limit);
        System.out.println(purchaseInfos.toString());
        //返回的总记录数
        int count=purchaseService.findPurchasePageCount();
        PageResult<List<PurchaseInfo>> listPageResult=new PageResult<List<PurchaseInfo>>("",purchaseInfos,0,count);
        return listPageResult;

    }

    @RequestMapping(value="/selectPurchaseByPartName.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<PurchaseInfo>> selectPurchaseByPartName(@RequestParam(value = "page") int page , int limit, String plate) {
        List<PurchaseInfo> purchaseInfos = purchaseService.selectPurchaseByPartName(plate);
        //返回的总记录数
        int count=purchaseInfos.size();
        PageResult<List<PurchaseInfo>> listPageResult=new PageResult<List<PurchaseInfo>>("",purchaseInfos,0,count);
        return listPageResult;
    }

    @RequestMapping(value="/AddPurchase.action",method = RequestMethod.POST)
    @ResponseBody
    public int addPurchase(@RequestBody PurchaseInfo purchaseInfo) {
        int  a=purchaseService.addPurchase(purchaseInfo);
            return a;

    }
}
package com.lzm.controller.admin;

import com.lzm.conversion.DateConveter;
import com.lzm.pojo.UserInfo;
import com.lzm.service.Interface.UserService;
import com.lzm.utils.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @author znz
 * @create 2021- 03- 26- 12:11
 */
@Controller
public class UserController {
    @Autowired
    private UserService userService;
    @Autowired
    private DateConveter dateConveter;

    @RequestMapping(value="/ShowAllUser.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<UserInfo>> ShowAllUser(@RequestParam(value = "page") int page , int limit) {
        List<UserInfo> users = userService.selectAllUser(page,limit);
        //返回的总记录数
        int count=userService.findUserPageCount();
        PageResult<List<UserInfo>> listPageResult=new PageResult<List<UserInfo>>("",users,0,count);
        return listPageResult;

    }

    @RequestMapping(value="/selectUserByPhone.action",method = RequestMethod.GET)
    @ResponseBody
    public PageResult<List<UserInfo>> selectUserByPhone(@RequestParam(value = "page") int page , int limit,String phone) {

        System.out.println(phone);
        List<UserInfo> users = userService.selectUserByPhone(phone);
        PageResult<List<UserInfo>> listPageResult=new PageResult<List<UserInfo>>("",users,0,1);
        return listPageResult;
    }

    @RequestMapping(value="/updateUser.action",method = RequestMethod.POST)
    @ResponseBody
    public UserInfo updateUser(HttpSession session, @RequestBody UserInfo user) {

        //判断密码是否改变
        int a=userService.isChangePasswod(user);
        if (a==0)
        {
            user=userService.updateUser(user);
            UserInfo user1 = (UserInfo) session.getAttribute("user");
            if (user.getId()==user1.getId())
            {
                session.setAttribute("user",user1);
            }
            return user;
        }else {
            String    password= DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
            user.setPassword(password);
            user=userService.updateUser(user);
            UserInfo user1 = (UserInfo) session.getAttribute("user");
            if (user.getId()==user1.getId())
            {
                session.setAttribute("user",user1);
            }
            return user;
        }
    }

    //根据ID删除用户
    @RequestMapping(value="/deleteUser.action",method = RequestMethod.GET)
    @ResponseBody
    public int deleteUser(int id) {
        int a=userService.deleteUserByID(id);
        return a;
    }

    @RequestMapping(value="/AddUser.action",method = RequestMethod.POST)
    @ResponseBody
    public int AddUser(@RequestBody UserInfo user) {
        if (userService.selectUserByPhone(user.getPhone()).size()>0)
        {
            return 2;
        }else
        {
            //2:手机号重复  1:添加成功
            String    password= DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
            int  a=userService.addUser(user);
            return a;
        }
    }
}

到此这篇关于使用SSM+Layui+Bootstrap实现汽车维保系统的示例代码的文章就介绍到这了,更多相关SSM+Layui+Bootstrap汽车维保系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java框架之Maven SSM集合

    目录 SSM Maven 什么是maven Maven好处,为什么要用Maven 三种仓库 坐标概念 总结 SSM @Controller,@Service本质都是@Component,作用是new对象放到Spring容器里. controller层 @Controller//controller层专属注解 @RequestMapping("/student") public class StudentController { @Autowired private IStudentSe

  • 基于java SSM springboot实现景区行李寄存管理系统

    主要技术实现设计:spring. springmvc. springboot. springboot security权限控制.mybatis .session. jquery . md5 .bootstarp.js tomcat.拦截器等. 主要功能实现设计:登录.用户管理.角色权限管理.菜单管理.部门管理.行李柜管理.用户寄存管理.记录查询管理.通知公告管理.入柜.出柜以及修改密码等操作. 项目介绍 随着中国人对于旅游休闲的积极认识和市场的需求不断增加,各个景区为了满足游客需求也在不断的开发

  • SSM VUE Axios详解

    目录 如何展示Sql日志?? SpringMVC里参数传递的说明 restful 语法: 用户规范: 参数接收: MyBatis简化sql的注解 前后端调用 1.Vue入门案例 2.Vue生命周期 概念 种类(③+⑧) 3.前后端调用 Axios Ajax 案例一: 案例二:通过?属性=属性值的方法拼接 案例三:通过对象的方式实现数据传递 总结 如何展示Sql日志?? 在yml核心配置文件内配置信息 #Sql日志文件打印 logging: level: com.jt.mapper: debug

  • 选课推荐交流平台系统基于java ssm springboot实现

    目录 主要功能模块设计: 主要技术: 主要功能实现前端: 选课平台首页: 登录注册管理: 选课推荐分类: 课程详情信息: 我的个人中心: 主要功能实现后台: 系统主页设计: 选课类型管理: 选课信息详情管理: 通知公告信息: 用户信息管理: 评论交流回复管理: 部分关键代码展示: 登录模块: 配置模块: 主要表设计: 用户表: 选课类型表: 选课详情表: 评论交流表: 回复信息表: 夏天到了.小雪来给大家降降温 话不多说.直接进入主题 主要功能模块设计: 登录注册.首页信息浏览.选课分类查看.选

  • 基于java ssm springboot+mybatis酒庄内部管理系统设计和实现

    目录 咱们废话不多说进入主题.系统主页展示: 用户信息管理; 角色权限控制管理: 管理员查看灵活配置; 插入一小部分代码段 通知公告信息管理 总结 咱们废话不多说进入主题.系统主页展示: 用户登录后进行系统首页:主要功能模块如下.分角色管理.超级管理员拥有最高权限.可以进行菜单灵活控制. 用户信息管理; 角色权限控制管理: 管理员查看灵活配置; 插入一小部分代码段 /** * . * * * * */ package io.renren.modules.sys.controller; impor

  • 基于java SSM springboot实现抗疫物质信息管理系统

    主要功能设计: 用户.区域.物质类型.物质详情.物质申请和审核以及我的申请和通知公告以及灵活控制菜单权限 主要技术实现:spring. springmvc. springboot.springboot security权限框架 mybatis . jquery . md5 .bootstarp.js tomcat.器.拦截器等 具体功能模块:用户模块.角色模块.菜单模块.部门模块以及灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求 业务模块功能:区域管理.对不同区域的进行管理以及物质发

  • Java实现茶叶售卖商城系统(java+SSM+JSP+EasyUi+mysql)

    目录 前言 实现效果 主要代码 用户管理控制层 商品管理服务类 订单控制层 前言 这是一个应用SSM框架的项目,前端页面整洁清晰.该系统有两个角色,一个是普通用户,另一个是管理员. 普通用户具有注册.登录.查看商品.添加购物车.添加商品收藏.下订单.商品评价.用户地址管理等等功能. 管理员具有登录.管理用户信息.管理商品信息.管理商品活动信息.管理订单信息.管理用户评论信息的等等功能. 应用技术:Jsp + SSM + EasyUi 运行环境:eclipse/IDEA + MySQL5.7 +

  • SSM框架整合JSP中集成easyui前端ui项目开发示例详解

    目录 前言 EasyUI下载与配置 页面美化 运行结果 总结与问题 前言 前端的UI框架很多,如bootsrap.layui.easyui等,这些框架提供了大量控件供开发人员使用,我们无需花费太大的精力,使得我们的页面具有专业标准,使用起来也很简单.所有的前端框架使用方式基本上大同小异,以下使用easyui作为UI框架做一演示,个人认为easyui提供的控件比较好看. EasyUI下载与配置 使用EasyUI,必须下载其js包,下载官网地址:https://www.jeasyui.cn/ 下载j

  • 使用SSM+Layui+Bootstrap实现汽车维保系统的示例代码

    本项目主要实现对汽车维修厂的信息化管理功能,主要包含三个角色:管理员,维修师傅,客户.实现的主要功能包含用户管理.配置管理.汽车管理.故障管理.供应商管理.配件管理.维修订单管理.统计信息.公告管理.个人信息管理.主要业务流程:用户在系统内发起汽车维修申请定单,管理员根据情况将定单分配给维修师傅,维修师傅接受任务后开始维修,并根据情况申请配件,处理完成后由管理员生成最终支付订单结算费用,客户进入系统进行费用支付,并可以查看自己相应的维修记录和费用信息等等. 技术架构: 后台开发:SSM框架 前端

  • SSM项目实现短信验证码登录功能的示例代码

    目录 1.登入网站 zz短信平台 2.导入工具类MessageUtil 3.ajax 模块 4. html页面 5.编写controller层 1.登入网站 zz短信平台 http://sms_developer.zhenzikj.com/zhenzisms_user/login.html 导入pom依赖 <dependency> <groupId>com.zhenzikj</groupId> <artifactId>zhenzisms</artifa

  • bootstrap table 多选框分页保留示例代码

    在使用bootstrap table的复选框功能的时候,由于采用服务端分页,当在第一页选择了某些数据,然后点击第二页选择一些数据,再次点回第一页,发现原先选择的数据已经清空了,原来的多选框并不支持翻页保留多选数据. 解决思路: 在分页的时候,吧原先选择的数据用一个全局变量保存,当再次翻页回来时,判断当前页数据是否存在于保存的数据数组中,存在则状态为选择.当然当取消选择的时候也要去删除数组中相应的数据. 为了解决这个问题,在查github上查文档发现有人提出了这个问题,并且作者wenzhixin

  • ssm实现视频的上传与播放的示例代码

    实现的功能: 1:实现视频的上传与播放. 2:使用shiro框架进行登录注册. 3:视频分页展示在页面上. 4:视频简介 5:视频评论 6:发表评论 简单介绍一下大概实现的思路: 首先主要的功能就是实现视频的上传与播放,那么我们就需要一个视频上传的界面,选择视频进行上传,那么上传到哪儿呢? 这里我们有多重选择,第一:我们可以将视频转换格式存在我们tomcat服务器里面,然后在数据库里面存入tomcat中对应的文件的路径.第二:我们可以使用nginx来存储我们的网页的静态资源.今天我就介绍上面一个

  • Python实现动态二维码生成的示例代码

    目录 第一个库:MyQR 普通的二维码制作 带背景图片的二维码制作 带动图背景的二维码制作 第二个库:qrcode 简单的二维码制作 带背景图片的二维码制作 大家好,我是辰哥~ 今天给大家分享两个制作二维码的Python库,可以生成普通的二维码.图片背景版二维码.动图GIF版二维. 第一个库:MyQR 安装 pip install MyQR 普通的二维码制作 from MyQR import myqr #运行 myqr.run('http://mtw.so/5w0Ubz') 二维码附上了链接,用

  • 利用java生成二维码工具类示例代码

    二维码介绍 二维条形码最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理. 如下为java生成二维码工具类,可以选择生成文件,或者直接在页面生成,话不多说了,来一起看看详细的示例代码吧. 示例代码 import java.aw

  • 基于Angular 8和Bootstrap 4实现动态主题切换的示例代码

    效果 首先看看效果: 本文将介绍如何基于Angular 8和Bootstrap 4来实现上面的主题切换效果. 设计 遵循Bootstrap的设计,我们会使用 bootswatch.com提供的免费主题来实现上面的效果.Bootswatch为前端程序员提供了多达21种免费的Bootstrap主题,并且提供了API文档和 实例页面 ,介绍如何在HTML+jQuery的环境中实现主题切换.其实,我们也可以使用Bootstrap官网提供的主题设计工具来设计自己的主题,这些自定义的主题也是可以用在本文介绍

  • Javascript计算二维数组重复值示例代码

    前言 最近工作中遇到了一个问题,需求是利用Javascript计算二维数组重复值,如下面有个二维数组 [[\'error\',3],[\'error\',5],[\'error\',6],[\'true\',3],[\'true\',1]] 需要统计计算重复项 \'error\' 和 \'true\', 统计计算之后的结果: [[\'error\',14],[\'true\',4]] 实现代码: var arr = [[\'error\',3],[\'error\',5],[\'error\',

  • js二维数组排序的简单示例代码

    如下所示: 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <title> New Document </title>  <meta name="Generator" cont

  • jQuery切换网页皮肤并保存到Cookie示例代码

    以下是源代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>j

随机推荐