125.【江道原项目总结】(二)

简介: 125.【江道原项目总结】

a标签提交表单

<ul class="clearfix">
              <li>
                <form th:action="@{/pay}" id="price" method="post">
                  <input type="hidden"  name="payMoney" value="10.00">
                  <a href="#" onclick="document.getElementById('price').submit();return false;">
                    <figure><img src="/img/kaorou1.png"/></figure>
                    <p>经典烤肉10.00元</p>
                  </a>
                </form>
              </li>
              <li>
                <form th:action="@{/pay}" id="price2" method="post">
                  <input type="hidden"  name="payMoney" value="19.00">
                  <a href="#" onclick="document.getElementById('price2').submit();return false;">
                  <figure><img src="/img/kaorou2.png"/></figure>
                  <p>烈火烤肉19.00元</p>
                </a>
                </form>
              </li>
              <li>
                <form th:action="@{/pay}" id="price3" method="post">
                  <input type="hidden"  name="payMoney" value="29.99">
                  <a href="#" onclick="document.getElementById('price3').submit();return false;">
                  <figure><img src="/img/kaorou3.png"/></figure>
                  <p>五香烤肉29.99元</p>
                </a>
                </form>
              </li>
              <li>
                <form th:action="@{/pay}" id="price4" method="post">
                  <input type="hidden"  name="payMoney" value="46.10">
                  <a href="#" onclick="document.getElementById('price4').submit();return false;">
                  <figure><img src="/img/kaorou4.png"/></figure>
                  <p>青醋烤肉46.10元</p>
                </a>
                </form>
              </li>
              <li>
                <form th:action="@{/pay}" id="price5" method="post">
                  <input type="hidden"  name="payMoney" value="100.20">
                  <a href="#" onclick="document.getElementById('price5').submit();return false;">
                  <figure><img src="/img/kaorou5.png"/></figure>
                  <p>嘻嘻烤肉100.20元</p>
                </a>
                </form>
              </li>
              <li>
                <form th:action="@{/pay}" id="price6" method="post">
                  <input type="hidden"  name="payMoney" value="10">
                  <a href="#" onclick="document.getElementById('price6').submit();return false;">
                  <figure><img src="/img/kaorou6.png"/></figure>
                  <p>暮春烤肉99.99元</p>
                </a>
                </form>
              </li>
            </ul>
@RequestMapping("/pay")
    public void payController(HttpServletRequest request, HttpServletResponse response, String payMoney) throws IOException {
        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY, "json", AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.sign_type);
        //设置请求参数
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(AlipayConfig.return_url);
        alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
        //商户订单号,商户网站订单系统中唯一订单号,必填
        //   订单号   order
        String order = UUID.randomUUID().toString().replaceAll("-", "");
        // 付款金额  money
        //订单名称
        String orderName="JSXS-JDYHGD";
        String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(new Date());
        //商品描述
        String orderDescription=format+"";
        //
        String out_trade_no = new String(order.getBytes("ISO-8859-1"), "UTF-8");
        //付款金额,必填
        String total_amount = new String(payMoney.getBytes("ISO-8859-1"), "UTF-8");
        //订单名称,必填
        String subject = new String(orderName.getBytes("ISO-8859-1"), "gbk");
        //商品描述,可空
        String body = new String(orderDescription.getBytes("ISO-8859-1"), "gbk");
        alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","
                + "\"total_amount\":\"" + total_amount + "\","
                + "\"subject\":\"" + subject + "\","
                + "\"body\":\"" + body + "\","
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
        //若想给BizContent增加其他可选请求参数,以增加自定义超时时间参数timeout_express来举例说明
        //alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
        //    + "\"total_amount\":\""+ total_amount +"\","
        //    + "\"subject\":\""+ subject +"\","
        //    + "\"body\":\""+ body +"\","
        //    + "\"timeout_express\":\"10m\","
        //    + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
        //请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节
        //请求
        String form = "";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
        response.getWriter().write(form);//直接将完整的表单html输出到页面
        response.getWriter().flush();
        response.getWriter().close();
    }
    @RequestMapping("/preverpay")
    public String toTest(){
        return "aliyunpay";
    }
}

3.经验总结

  1. 切记第一件事情请勿把配置文件的文件名写错。
  2. springBoot的静态资源 不用指明路径。
  3. 在a标签中利用Resultful风格对数据
  4. 使用表的时候,表名一定要飘号

4.全部记录数据

  1. 切记第一件事情请勿把配置文件的文件名写错。
  2. springBoot的静态资源 不用指明路径。(就是在static的css js img可以直接被templates访问)
<link rel=stylesheet type="text/css" href="/css/1024_768.css">
    <link type="text/css" href="/css/nav.css" rel="stylesheet"/>
    <script language="javascript" src="/js/jquery-1.7.2.min.js"></script>
    <script language="javascript" src="/js/nav.js"></script>
    <script language="javascript" src="/js/jquery.pack.js"></script>
    <script language="javascript" src="/js/slide.js"></script>
    <script language="javascript" src="/js/png.js"></script>
    <script type="text/javascript" src="/jwplayer.js"></script>
  1. 在a标签中利用Resultful风格实现对页面的跳转
<a th:href="@{/news.html}" class="news">新闻中心</a>
  1. 只有thymeleaf才能去访问templates
  2. 如果没有在配置文件中配置数据库的信息,那就不要导入相关依赖。否则会报错
  3. document实现对页面的跳转 :
<li class="roll_pic r_01" onclick="document.location.href='/cun/Pay'">
  1. 利用ResultFul风格试图降低Controller层的冗余性
@RequestMapping("/cun/{tail}")
    public String cunPay(Model model,@PathVariable("tail") String tail){
        //   村委会账单公告
        double sum=0;
        List<payMoney> payMonies = liloucuncunweihuiServer.allPay();
        for (payMoney payMony : payMonies) {
            sum+=payMony.getMoney();
        }
        model.addAttribute("cunPay",payMonies);
        model.addAttribute("sumMomey","总支出: "+sum+"元");
        //   村委选举
        List<cunXuan> cunXuans = liloucuncunweihuiServer.allXuan();
        model.addAttribute("cunCount","村选人数: "+cunXuans.size());
        model.addAttribute("cunXuans",cunXuans);
        return "cunPublic/cun"+tail;
    }
  1. 表名可以驼峰,字段名要和实体类一致,在xml语法中表名和字段名也要和数据库的一致
  2. @{}标签与${}标签共用:
<a th:href="@{/cunAdd/{id}(id=${cunxuan.id})}">投票</a>
  1. 如果我们在用controller重定向某一个路由的时候,第一个"/"一定要加上
@RequestMapping("/cunAdd/{id}")
    public String addTickets(@PathVariable("id") int id){
        List<cunXuan> cunXuans = liloucuncunweihuiServer.allXuan();
        cunXuan cunXuan = cunXuans.get(id-1);
        int count = cunXuan.getSum_ticket();
        count+=1;
        int i = liloucuncunweihuiServer.addTicket(id, count);
        return "redirect:/cun/Xuan";
    }
  1. img实现对表单的提交
<form th:action="@{/pay}" id="price5" method="post">
<input type="hidden"  name="payMoney" value="100.20">
<a href="#" onclick="document.getElementById('price5').submit();return false;">
<figure><img src="/img/kaorou5.png"/></figure>
<p>嘻嘻烤肉100.20元</p>
</a>
  1. 如果使用了ResultFul风格的话,普通的路径就不能用了。
  2. 假如说在templates包中创建另一个news包,那么静态资源前面需要加上 “/“templates下的html页面也需要添加”/”
<link rel=stylesheet type="text/css" href="/css/1024_768.css">
  <link type="text/css" href="/css/nav.css" rel="stylesheet"/>
  <link type="text/css" href="/css/about.css" rel="stylesheet"/>
  <script language="javascript" src="/js/jquery-1.7.2.min.js"></script>
  <script language="javascript" src="/js/nav.js"></script>
  <script language="javascript" src="/js/png.js"></script>
  <script language="javascript" src="/js/jquery.pack.js"></script>
  <script language="javascript" src="/js/slide.js"></script>

  1. 利用RestFul风格实现换内容不换页面的操作.
@RequestMapping("/article/{id}")
    public String article(Model model,@PathVariable("id") int id){
        model.addAttribute("title1","关于卫生问题的公告!!");
        model.addAttribute("title2","关于卫生问题的公告!!2");
        article article = liloucuncunweihuiServer.articleById(id);
        model.addAttribute("article",article.getText());
        return "article/article1";
    }
  1. 日期格式化
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(new Date());
  1. 新闻日期更新排序,(最新更新的文章放到最前面)
@RequestMapping("/article/{id}")
    public String article(Model model, @PathVariable("id") int id) {
        // 这里是正文中的标题
        model.addAttribute("title1", "关于卫生问题的公告!!");
        model.addAttribute("title2", "关于卫生问题的公告!!2");
        model.addAttribute("title3", "关于卫生问题的公告!!3");
        model.addAttribute("title4", "关于卫生问题的公告!!4");
        model.addAttribute("title5", "关于卫生问题的公告!!5");
        model.addAttribute("title6", "关于卫生问题的公告!!6");
        // 查询全部文章信息
        List<article> articles = liloucuncunweihuiServer.allArticle();
/**
 *     链表需要反转!!
 *     这里我们实现了对内容的更新,并且实现了把最新的内容放到了最前面
 */
        article article = liloucuncunweihuiServer.articleById(articles.size() + (1 - id));
        model.addAttribute("article", article.getText());
        return "article/article1";
    }
  1. List链表反向遍历
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
List<String> reversedList = Lists.reverse(list);
  1. 然后我们遍历reversedList,就是逆向输出。
  2. 数据库的表设置自增、那么我们如果利用Java的时候,那么我们只需要对sql语句进行整改就好
<insert id="addArticle" parameterType="String">
        insert into article(title,text,date) values(#{title},#{text},#{date})
    </insert>
  1. 在主键自增的数据库语句中,我们如果想对这个表进行新增。那么接口我们只需要写除了自增字段意外的字段即可。在Sql语句中,我们的参数类型是这个表对应的类。
//添加五好村民
    public int addHero(String name,String groups,String date);
<insert id="addHero" parameterType="com.jsxs.pojo.hero">
        insert into hero(name,groups,date) values(#{name},#{groups},#{date})

相关文章
|
自然语言处理 搜索推荐 BI
挑战迎刃而解!化工行业CRM案例揭示企业扩张成功之道!
Zoho CRM为化工行业客户提供了解决激烈竞争的策略。一家从事肥料研发和生产的上市化工企业,面临全球化扩展中的资源优化、客户管理整合和流程追溯难题。Zoho CRM通过建立全球化的客户信息平台,集成ERP实现数据流畅,完善全生命周期管理,以及流程规范化,助力企业提升效率。系统上线后,企业运营效率提高,客户体验改善,实现了国内外业务的协同发展。Zoho CRM已成功服务于多家化工企业,提供全面的CRM解决方案。
294 2
|
编解码 图形学
|
存储 Cloud Native 编译器
C++ 多态实现原理
C++ 多态实现原理
|
XML 安全 前端开发
SpringSecurity系列(四) Spring Security 实现权限树形菜单
SpringSecurity系列(四) Spring Security 实现权限树形菜单
168 0
|
IDE PHP 开发工具
除了Xdebug,还有哪些常用的PHP调试工具?
这些调试工具各有特点,开发者可以根据自己的需求和习惯选择适合的工具。在实际开发中,结合多种工具的使用往往能够更全面、更深入地进行调试,提高开发效率和代码质量。同时,随着技术的不断发展,新的调试工具也在不断涌现,开发者需要保持学习和关注,以便及时掌握最新的调试技术和工具。
414 1
|
存储 算法 Go
go语言并发实战——日志收集系统(七) etcd的介绍与简单使用
go语言并发实战——日志收集系统(七) etcd的介绍与简单使用
201 0
|
Cloud Native 测试技术 Linux
云原生之使用Docker部署slash书签共享平台
云原生之使用Docker部署slash书签共享平台
333 1
心理健康管理系统 【毕业设计系统】
这篇文章介绍了一个心理健康管理系统的毕业设计项目,展示了系统的功能分布、登录注册界面以及不同用户角色的后台管理界面,并提供了技术栈和效果截图。
心理健康管理系统 【毕业设计系统】
|
数据采集 网络安全 UED
揭秘豆瓣网站爬虫:利用lua-resty-request库获取图片链接
本文探讨了如何使用Lua的lua-resty-request库和爬虫代理IP技术从豆瓣网站高效获取图片链接。通过定制请求头部和代理服务,可以应对反爬虫机制,提高爬虫的稳定性和匿名性。示例代码展示了一种方法,但实际应用需考虑版权和法律法规。
388 2
揭秘豆瓣网站爬虫:利用lua-resty-request库获取图片链接
|
存储 安全 云计算
最受欢迎的云主机推荐
本文介绍什么是云主机以及云主机的优势(性价比高、弹性可扩展、安全隔离高、多操作系统支持),然后提供了选择云主机的选购指南(名气大、口碑好、价格适中),最后推荐了几款备受欢迎的云主机。
417 0
最受欢迎的云主机推荐