spring MVC控制器基本用法

Spring-MVC配置项目框架、注释@Repository/@Service/@Controller/@RequestMapping入门讲解 主要讲解Mvc项目框架配置,以及部分后端基本运用的注解 阅读详情
package com.lens.order.controller;

import com.lens.order.entity.TestOrderEntity;
import com.lens.order.service.ITestOrderService;
import com.lens.order.service.Impl.TestOrderService;
import org.dartframework.core.common.controller.BaseController;
import org.dartframework.core.common.model.json.AjaxJson;
import org.dartframework.core.util.ResourceUtil;
import org.dartframework.web.system.pojo.base.TSUser;
import org.dartframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/TestOrderController")
public class TestOrderController extends BaseController {
   // @Override


    @Resource
    private PlatformTransactionManager transactionManager;

    @Autowired
    //private TestOrderService orderService;
    private ITestOrderService orderService;

    @Autowired
    private SystemService systemService;

    @RequestMapping(params = "Hello")
    @ResponseBody
    public String Hello() {
        return "Hello,Lily";
    }

    @RequestMapping(params = "getData")
    @ResponseBody
    public AjaxJson getData(String id) {  //测试OK
        AjaxJson aj = new AjaxJson();


        //CpsSaleSendoutPage cpsSaleSendoutPage = new CpsSaleSendoutPage();

        //TestOrderEntity orderEntity = orderService.get() .co . .commonDao.get(TestOrderEntity.class, id);
        TestOrderEntity orderEntity = orderService.get(TestOrderEntity.class, id);

        if ( orderEntity==null)
        {
            orderEntity= new TestOrderEntity();
            orderEntity.id="test001";
        }

        orderEntity.order_sn="v02";
        orderService.save( orderEntity);

        //this.get(CpsSaleSendoutEntity.class, id);


        aj.setMsg("获取发货信息成功");
        //aj.setObj(cpsSaleSendoutPage);
        return aj;
    }

    @RequestMapping(params = "insertorder")
    @ResponseBody
    public  AjaxJson InsertOrder(String id)    {  //测试OK
        AjaxJson j = new AjaxJson();

        TestOrderEntity orderEntity = new TestOrderEntity() ; //orderService.get(TestOrderEntity.class, id);
        orderEntity.id="test_" + id; //人工指定,保存后还是会被覆盖
        orderEntity.create_name="tany";

        try {

            //systemService.saveOrUpdate(orderEntity);  //用此方法没有成功
            systemService.save(orderEntity);
            j.setSuccess(true);
            j.setMsg("操作成功!");
        }
        catch (Exception ex){
            j.setSuccess(false);
            j.setMsg("error:" + ex.getMessage());
        }

        return j;
    }

    @RequestMapping(params = "updateorder")
    @ResponseBody
    public  AjaxJson UpdateOrder(String id){  //更新
        AjaxJson j = new AjaxJson();
        TSUser u = ResourceUtil.getSessionUser();
        //String sql1 = "update test_orders set update_by = ?, update_date = sysdate()  where id = ?";
        String sql1 = "update test_orders set memo = ? where id = ?";
        systemService.executeSql(sql1,u.getRealName(),id);
        j.setSuccess(true);
        j.setMsg("操作成功!");
        return j;
    }

    @RequestMapping(params = "updateorder2")
    @ResponseBody
    public  AjaxJson UpdateOrder2(String id){  //更新 ,测试OK
        AjaxJson j = new AjaxJson();

        TestOrderEntity orderEntity = systemService.getEntity( TestOrderEntity.class, id);
        if (orderEntity!=null)        {
            try {
                //orderEntity.memo="updateorder2 v2";
                systemService.saveOrUpdate(orderEntity);
                j.setSuccess(true);
                j.setMsg("操作成功!");
            }
            catch (Exception ex){
                j.setSuccess(false);
                j.setMsg("error:" + ex.getMessage());
            }
        }
        else {
            j.setSuccess(false);
            j.setMsg("not found record");
        }

        return  j;

    }


    @Transactional  //控制器中写此行,事务控制不到,tany
    @RequestMapping(params = "deleteorder1")
    @ResponseBody
    public  AjaxJson DeleteOrder1(String id)    { //测试不通过!

        AjaxJson j = new AjaxJson();
        TestOrderEntity orderEntity =  orderService.get(TestOrderEntity.class, id);

        if (orderEntity!=null){
                 systemService.delete(orderEntity);
                j.setSuccess(true);
                j.setMsg("操作成功!");

                int a=0,b=0,c=0;
                c = a / b;

        }
        else {
            j.setSuccess(!true);
            j.setMsg("记录不存在!");
        }

        return j;
    }



    @RequestMapping(params = "deleteorder2")   //测试OK,但实体类中的int要改成Integer,否则为null时会出错
    @ResponseBody
    public  AjaxJson DeleteOrder2(String id)    {

        String msg="";
        AjaxJson j = new AjaxJson();

        TestOrderEntity orderEntity=null ;
        try {
            orderEntity=orderService.get(TestOrderEntity.class, id);
        }
        catch (Exception ex){
            msg= ex.getMessage();
        }

        DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();
        defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        TransactionStatus status = transactionManager.getTransaction(defaultTransactionDefinition);
        //原文链接:https://blog.youkuaiyun.com/quwenzhe/article/details/60308999
//
//
        if (orderEntity!=null){
             try {
                systemService.delete(orderEntity);
                j.setSuccess(true);
                j.setMsg("操作成功!");

                int a=0,b=0,c=0;
                c = a / b;

                transactionManager.commit(status);
             }
            catch (Exception ex){
                j.setSuccess(false);
                j.setMsg("error:" + ex.getMessage());


                transactionManager.rollback(status);
                ex.printStackTrace();
                //log.error("sava *** error" + ex.toString());
            }
        }
        else {
            j.setSuccess(!true);
            j.setMsg("记录不存在!");
        }

        return j;
    }

    //@Transactional  //控制器中写此行,事务控制不到,tany
    @RequestMapping(params = "deleteorderok")
    @ResponseBody
    public  AjaxJson DeleteOrderOK(String id)    {  //测试OK

        AjaxJson j = new AjaxJson();

        try {
            boolean yn= orderService.tranDelete(id);  //在service中控制,可以成功

            j.setSuccess(yn);
        }
        catch (Exception ex){
            j.setSuccess(false);
            j.setMsg("error:" + ex.getMessage());
        }

        return  j;
    }


    @RequestMapping(params = "twotrandeleteorder")
    @ResponseBody
    public  AjaxJson TwoTranDeleteOrder(String id)    {  //测试OK,双层事务嵌套

        String msg="";
        AjaxJson j = new AjaxJson();

        TestOrderEntity orderEntity=null ;
        try {
            orderEntity=orderService.get(TestOrderEntity.class, id);
        }
        catch (Exception ex){
            msg= ex.getMessage();
        }

        DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();
        defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        TransactionStatus status = transactionManager.getTransaction(defaultTransactionDefinition);
        //原文链接:https://blog.youkuaiyun.com/quwenzhe/article/details/60308999


        try {
            orderService.tranDelete("11");

        }
        catch (Exception ex){
            msg= ex.getMessage();
        }

//
        if (orderEntity!=null){
            try {
                systemService.delete(orderEntity);   //01 此处Service中的事务本身是提交的
                j.setSuccess(true);
                j.setMsg("操作成功!");

                transactionManager.rollback(status);  //02 在控制器中的事务又回滚,最终service中的事务也被回滚
                return  j;



//                int a=0,b=0,c=0;
//                c = a / b;
//
//                transactionManager.commit(status);
            }
            catch (Exception ex){
                j.setSuccess(false);
                j.setMsg("error:" + ex.getMessage());


                transactionManager.rollback(status);
                ex.printStackTrace();
                //log.error("sava *** error" + ex.toString());
            }
        }
        else {
            j.setSuccess(!true);
            j.setMsg("记录不存在!");
        }

        return j;
    }



    @RequestMapping(params = "selectorder")
    @ResponseBody   //测试OK   关联查询
    public AjaxJson SelectOrder(String id){
        String sql = " select a.* , b.order_sn, b.ccode, b.cname\n" +
                "from test_orderdetail  a\n" +
                "left join test_orders b on a.oid=b.id\n" +
                "where a.oid='" +  id +  "'\n" ;

        List<Map<String, Object>> mapList=systemService.findForJdbc(sql);
        AjaxJson j = new AjaxJson();
        j.setSuccess(true);
        j.setObj( mapList );
        j.setMsg("操作成功!");

        return  j;
    }



    //URL调用方法:http://localhost:8080/jinying02/TestOrderController.do?getSendoutInfo2a&id=2
    @RequestMapping(params = "getSendoutInfo2")
    @ResponseBody
    public AjaxJson getSendoutInfo2(String id){
        AjaxJson aj = new AjaxJson();
        aj.setMsg("获取发货信息成功");
        //aj.setObj(cpsSaleSendoutPage);
        return aj;

//        try {
//            CpsSaleSendoutPage cpsSaleSendoutPage = cpsSaleService.getSendoutInfo(id);
//            aj.setMsg("获取发货信息成功");
//            aj.setObj(cpsSaleSendoutPage);
//            return aj;
//        } catch (Exception e) {
//            e.printStackTrace();
//            aj.setSuccess(false);
//            aj.setMsg("获取发货信息失败!"+e.getMessage());
//            return aj;
//        }
    }
}

Spring MVC学习笔记 - Java 通过创建控制器、定义视图和配置Spring MVC环境,我们可以构建强大的Web应用程序。当然,Spring MVC还提供了更多高级功能,例如数据绑定、表单处理、拦截器等,可根据具体需求进行深入学习和应用。Spring MVC(Model-View-Controller)是一种基于Java的Web应用程序开发框架,它提供了一种组织和管理Web应用程序的模式。本文将介绍Spring MVC的基本概念和用法,并提供相应的源代码示例。在上面的示例中,我们启用了注解驱动并扫描了控制器类所在的包。 阅读详情

相关推荐

Spring MVC高频面试题总结,面试再也不怕了

1、什么是Spring MVC? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 2、Spring MVC的优点? 可以支持各种视图技术,而不仅仅局限于JSP 与Spring 框架继承(IOC、AOP) 清晰的角色分配:前端控制器(DispatcherServlet),请求到处理器映射(HandleMapping

Java全能学习+面试指南 290

SpringMVC-controller

controller

qq_53078944的博客 146

深入解析Spring MVC案例

本文还有配套的精品资源,点击获取 简介:Spring MVC是一个基于Java的MVC架构框架,用于创建高性能的Web应用程序。本案例详细介绍了如何使用Myeclipse搭建一个简单的Spring MVC项目,包括环境配置、项目创建、HelloWorld示例、视图解析、数据库配置及运行测试。本案例旨在帮助初学者掌握Spring MVC的基本用法,并理解其在Web开发中的应用...

weixin_42599558的博客 1190

事务

事务是恢复和并发控制的基本单位。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)

qq_33774935的博客 443

python爬取淘宝数据

python爬取淘宝数据淘宝评论 淘宝评论 打开淘宝,选择打开需要爬取的商品的评论。在谷歌浏览器选择开发者工具,选择network,找到list_detail_rate.htm?itemId=624466733121,点击headers、previews,可以看见相应的评论数据。 爬取一页屏评论代码如下 import re import requests headers = { 'Referer': '在headers中', 'User-Agent': '在

qq_36333776的博客 5798

从原理到实践:手把手教你用XY2-100协议控制激光振镜(含引脚定义图)

本文详细解析了XY2-100协议在激光振镜控制中的应用,从硬件接口定义到时序分析,再到Verilog硬件逻辑实现,提供了完整的开发指南。通过实际案例和优化策略,帮助开发者快速掌握高精度激光振镜控制技术,提升加工质量和效率。

weixin_30505225的博客 403

SpringMVC 中的控制器的使用

文章目录1 直接通过Bean配置Controller2 使用注解 实现Controller3 RestFul风格4 接收对象 1 直接通过Bean配置Controller 在Spring配置文件中设置控制器类的xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001

三川小哥 狂想曲 765

ESP32IDF 通过 PCA9685控制舵机的程序bug处理

esp32 PCA9685 bug 舵机

ztvzbj的博客 726

spring springmvc 将事物管理(@Transactional)分别加在 controller和service层

 spring springmvc 将事物管理(@Transactional)分别加在 controller和service层 标签: spring事物管理Transactionalcontroller和service层 2016-11-24 18:34 6322人阅读 评论(0) 收藏 举报 分类: spring springmvc

java_2017_csdn的博客 8645

【Matlab】多旋翼无人机视觉伺服跟踪控制程序

本文介绍了基于Matlab的多旋翼无人机视觉伺服跟踪控制程序开发方法。该系统采用视觉感知、坐标转换、伺服控制和仿真验证四个核心模块,通过HOG+SVM目标检测、Shi-Tomasi特征提取和PID双闭环控制算法实现动态目标跟踪。详细阐述了相机标定、目标检测、坐标转换及伺服控制等关键环节的Matlab实现代码,并进行了仿真验证。结果表明该系统在±0.1m的跟踪精度下可实现100Hz的实时处理,适用于室内外复杂场景。文章还提出了工程应用中的优化建议,为无人机视觉伺服系统的开发提供了完整的技术方案。

unber的博客 507

Android-Zygote进程的诞生—从init到Zygote启动

Android Zygote进程启动流程解析 Android系统的Zygote进程是所有应用进程的父进程,由init进程创建。启动流程分为: 内核阶段:加载init进程(PID=1) init进程阶段: 挂载基础文件系统(tmpfs、proc等) 设置SELinux安全策略 解析init.rc配置文件 Zygote启动:init进程通过app_process启动Zygote,预加载系统资源 SystemServer:Zygote fork出系统服务进程 关键点: init是用户空间第一个进程......

保持专注,保持热爱 638

Spring MVC : 控制器方法中获取当前请求对象的用法总结

1. 将请求对象作为当前控制器bean组件的属性注入,在控制器方法中可以操作请求对象 ; 例子 @Controller public class DemoController { @Autowired ServletRequest request; @RequestMapping(value = "/") public String myControlle...

Details Inside Spring 1511

【用unity实现100个游戏之2】复刻实现经典2d平台跳跃游戏《蔚蓝 Celeste》(附工程源码)

蔚蓝》是一款备受好评的独立游戏,由游戏开发工作室开发并由发行。这款游戏于2016年首次发布,并在玩家和评论界收获了广泛赞誉。蔚蓝以其独特的艺术风格和引人入胜的故事而著称。游戏以深海为背景,玩家将扮演一个能够探索水下世界的神秘生物。游戏通过惊人的视觉表现和动态的海洋生态系统为玩家带来了令人难忘的游戏体验。无论是广阔的水下景观还是充满生机的海洋生物,蔚蓝都让玩家感受到深海的神秘和美丽。蔚蓝在玩法上注重探索和解谜。玩家可以在海底环境中自由游动,发现隐藏的地点和秘密,与各种生物互动,并解决环境谜题以继续前进。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4168

Spring MVC测试框架入门–第1部分

最新推出的主要Spring框架是Spring MVC测试框架,Spring Guys声称它是“一流的JUnit支持,可通过流畅的API测试客户端和服务器端Spring MVC代码” 1 。 在这个博客以及下一个博客中,我将看一看Spring的MVC测试框架,并将其应用于我现有的一些示例代码中,以弄清它是否能如其所愿。 已使用两种设置服务器端测试的方式来设计API。 首先,它们带有Spri...

最佳 Java 编程 257

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1275

使用 MATLAB/Simulink 对风光互补发电系统进行建模

随着全球对清洁能源的需求日益增长,风力发电和光伏发电作为两种主要的可再生能源形式,在电力供应中的占比越来越高。然而,由于风电和光伏的间歇性和不确定性,单独依赖其中任何一种能源都会给电网带来挑战。因此,风光互补发电系统(Wind-PV Hybrid System)应运而生,通过合理配置风力发电机和光伏电池板的数量,可以有效提高系统的稳定性和可靠性。此外,为了确保整个电力系统的安全稳定运行,还需要研究风光互补发电系统与主网之间的协调调度策略。本教程将详细介绍如何使用。

amy_mhd的博客 118

Spring MVC的常用注解

此注解说明Spring类的实例是一个控制器,使用@Controller注解的类不需要继承特定的父类或者实现特定的接口,相对实现Controller接口变得更加简单,而且Controller接口的实现类只能处理一个单一的请求动作。Spring使用扫描机制查找应用程序中的所有基于注解的控制...

choushu6756的博客 230

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Spring Framework MVC控制器方法参数详解

你是否曾经在使用Spring MVC时对控制器方法的参数感到困惑?为什么有些参数需要注解,有些不需要?Spring是如何自动将HTTP请求中的数据绑定到方法参数的?本文将深入解析Spring MVC控制器方法参数的处理机制,帮助你全面掌握这一核心功能。 通过本文,你将学到: - Spring MVC参数解析的完整工作机制 - 30+种内置参数解析器的分类和使用 - 常用注解参数的详细用法和最佳实...

gitblog_00910的博客 432

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

spring boot控制器的使用

一:1.注解   2.control注解  @Controller public class HelloController { @Value("${cupSize}") private String cupSize; @Value("${age}") private Integer age; @Value("${content}") privat...

lisongchuang的博客 3700

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring MVC的@ControllerAdvice应用

一 点睛 通过@ControllerAdvice,我们可以对于控制器的全局配置放在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@ModelAttribute、@InitBinder注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。 @ExceptionHandler:用于全局处理控制器里的异常。 @ModelAtt...

实践求真知 1495

Spring MVC中控制器方法的返回值

原文链接:http://www.yiidian.com/springmvc/return-value.html Spring MVC的控制器方法返回值可以支持多种写法,每种写法的场景和效果都不一样。下面分别来看看每种返回值的使用。 普通字符串 转发字符串 重定字符串 void ModelAndView Java对象 1 普通字符串 返回普通字符串这种情况比较常见,主要用在我们处理完业务逻辑后,...

Java客学习室 1900

Spring MVC中@PathVariable的用法详解

@PathVariable是Spring MVC的核心注解,用于从URL路径中提取变量值并绑定到控制器方法参数。它通过URI模板(如/users/{userId})定义占位符,支持自动类型转换和名称匹配,默认必需且常用于RESTful API的资源标识。与@RequestParam不同,@PathVariable处理路径段而非查询参数,适用于资源定位场景。该注解简化了动态URL处理,是构建语义化RESTful服务的关键工具。使用时需注意变量必需性、类型匹配以及与@RequestParam的适用场景区分。

2301_80215285的博客 1318

Spring MVC 框架搭建及详解

现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。  一、Spring MVC环境搭建:(Spring 2.5.6 + H...

weixin_33919941的博客 64

spring mvc常见注解:后台接收参数

一:@RequestMapping 前台访问后台时,根据@RequestMapping内容进行控制器层的对应与函数对应 1.@RequestMapping(“exp”) 一般写于类或函数上,完全匹配,可匹配exp,可能匹配exp.json 2.@RequestMapping(“expnewword { index } /{ dbid } .html”) 一般写于函数上,index和db...

Zsysu_it的博客 2480

Spring MVC Controller 支持的返回类型

Spring MVC Controller中@RequestMapping的返回类型

YUST Hacker 408
上一篇: 如何查当前Delphi版本宏VERXXX和编译版本号CompilerVersion
下一篇: Null value was assigned to a property of primitive type setter of“原因及解决方法
jozosoft
博客等级 码龄22年 10粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值