美文网首页
三、后台java

三、后台java

作者: 毛小意 | 来源:发表于2018-06-07 13:13 被阅读0次

    学习笔记一:基础了解

    页面请求方式

    .get方法:

    URL的路径格式:http://XXXXX?name=xxx;

    后台写法:

    @RequestMapping("XXXXX")

    public void getData(String name){}

    .post方法:

    URL的路径格式:http://XXXXX/xxx;

    后台写法:

    @RequestMapping(value = "/update",method = RequestMethod.POST,produces = "application/json;charset=UTF-8")

    @ResponseBodypublic MessageBox updateRole(@Valid Role role, BindingResult result){    

    return MessageBox.getSuccessMsg("修改角色成功");

    }

    说明:把传的值封装在对象里。一般用此方法都用于表单的验证

    @Valid是匹配Role对象里的验证,from表单传的数据是否规范。

    post请求的时候参数直接用(),放在路径里

    $.post(URL.deleteBy(yearMonth,employNos,ids),function(data){    $.msgbox({msg:data.text,icon:data.type});    if(data.type == 'success'){ }});

    .第三种方法

    URL的路径格式:http://XXXXX/xxx/abc/ddd

    后台写法:

    @RequestMapping(value = {"/delete/{yearMonth}/{employNos}/{ids}"}, method = RequestMethod.POST, produces = "application/json;charset=UTF-8")

    @ResponseBodypublic MessageBox deletePayroll(@PathVariable String yearMonth,@PathVariable String employNos,@PathVariable String ids) { 

    return MessageBox.getErrorMsg("删除数据失败");

    }

    说明:

    当参数为路径的时候,这时候要用的参数就要写上:@PathVariable作为注释。

    前台传送的参数写法:

    deleteBy:function(yearMonth,employNos,ids){    return '/hr/civilianPayroll/delete/'+yearMonth+'/'+employNos+'/'+ids;},

    注:当出现value={“”,””}下面多路径配置情况,说明此方法被不同请求共用,共用的路径不同。

    @RequestMapping(value={"","/","/index"},method = RequestMethod.GET)

    public String index(Model model) {    return "index";}

    java注解说明

    ⒈Controller注解

    4.1类注解

    @Controller(由Spring识别Handler实例)放在Controller的类前面:

    图一  访问路径

    @RequestMapping(value=, method=, params=)设置访问的路径,如上图所示,具体配发见上笔记

    4.2方法注释

    @RequestMapping(value=, method=, params=)@PathVariable,配合占位符{parameter}

    示例截图如下

    图二  访问路径二

    @RequestParam(value=, required=, defaultValue=)

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),

    另外一种是用注解@RequestParam 直接获取。

    如下图直接传参数

    图三  传参数

    或者指定参数名字,是否参数必传。Required为true为必传,flase则可传可不传

    图四 参数设置

    @CookieValue(value=, required=, defaultValue=) 获取前台传的cookie值。

     @RequestHeader(value=, required=, defaultValue=)

    @CookieValue的使用方式类似,在控制器的方法参数中使用注解把请求路径指定的参数提取出来作为实参注入形参中

    4.2封装入参

    获取值方法

    HttpServletRequest,WebRequest, ServletRequest的InputStream / Reader

    输出值方法

    HttpServeltResponse,ServletResponse的OutputStream / Writer

     4.3请求信息和对象的转换

    // 使用  @RequestBody   

    @ResponseBody;使用HttpEntity / ResponseEntity 

     @ ResponseBody  

    @RequestMapping  返回值通常解析为跳转路径,加上@ResponseBody后返回结果不会被解析为跳转路径,而是返回值直接写入HTTP response body里面,加上@ ResponseBody后,会直接返回json数据。 

     @RequestBody首先  @RequestBody需要接的参数是一个string化的json,这里直接使用JSON.stringify(json)这个方法来转化

    图五 类传值

    HttpMessageConverter@Valid是使用hibernate validation的时候使用

    图六 参数

    这里使用时在Role这个类里配置相关信息,进行验证。通过@NotBlank(message = "")设置就可以对传入值的类型进行验证

    图七 类注释

    //空检查

    @Null       验证对象是否为null

    @NotNull    验证对象是否不为null, 无法查检长度为0的字符串

    @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.

    @NotEmpty 检查约束元素是否为NULL或者是EMPTY.

    // Booelan检查

    @AssertTrue     验证 Boolean 对象是否为 true

    @AssertFalse    验证 Boolean 对象是否为 false

    //长度检查

    @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内

    @Length(min=, max=) Validates that the annotated string is between min and max included.

    //日期检查

    @Past       验证 Date 和 Calendar 对象是否在当前时间之前

    @Future     验证 Date 和 Calendar 对象是否在当前时间之后

    @Pattern    验证 String 对象是否符合正则表达式的规则

    //数值检查,建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null

    @Min            验证 Number 和 String 对象是否大等于指定的值

    @Max            验证 Number 和 String 对象是否小等于指定的值

    @DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度

    @DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度

    @Digits     验证 Number 和 String 的构成是否合法

    @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。@Range(min=, max=) Checks whether the annotated value lies between (inclusive) the specified minimum and maximum.

    @Range(min=10000,max=50000,message="range.bean.wage")

    private BigDecimal wage;

    @Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)

    @CreditCardNumber信用卡验证

    @Email  验证是否是邮件地址,如果为null,不进行验证,算通过验证。

    @ScriptAssert(lang= ,script=, alias=)

    @URL(protocol=,host=, port=,regexp=, flags=)

    @Validated 是只用spring  Validator 校验机制使用

    @Override 的作用如果想重写父类的方法,在方法前面加@Override 系统可以帮你检查方法的正确性,

    Dao层实现里面写的:

    @Repository 

    它用于将数据访问层(DAO层 ) 的类标识为 Spring Bean。

    为了让Spring能够扫描类路径中的类并识别出 @Repository 注解,需要在 XML 配置文件中启用Bean 的自动扫描功能,这可以通过<context:component-scan/>实现。

    图八 

    @Autowired接口注入

    @Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。@Qualifier()注解:实现类就是有多个使用,括号里面的应当是Car接口实现类的类名,

    @Resource:

    文件类型处理:

    属性文件:一行表示一个属性,属性就是键值对,键和值用等号(=)或冒号(:)分隔,一般用于配置程序的一些参数。db.host=192.168.10.100

    在java中有一个专门的类java.util.Properties里面的Properties类,可以直接引用。

    使用类Properties处理属性文件的好处是:可以自动处理空格,我们看到分隔符=前后的空格会被自动忽略

    可以自动忽略空行

    可以添加注释,以字符#或!开头的行会被视为注释,进行忽略

    但是在处理中文name=老马是不能这么写,只能写成Unicode的格式name=\u8001\u9A6c

    CSV文件/ Excel/HTML/ 压缩文件

    学习笔记一:增删该查

    Java熟悉:

    如果要用自己写的查询语句,需要在对应的xml文件里面写查询语句

    图九 配置查询语句

    在dao层不能直接引用,通过调用父级的方法,给对应的xml的id。进行查询

    图十 mapper方法

    增删该查功能:

    直接用basedao里封装好的增删该查功能,子类继承父类,直接调用方法。

    在mybatis-config.xml文件里配置用户信息

    图十一 类设置 图十二 xml设置

    表中

    查询功能:

    前台使用easyui的数据绑定数据网格datagrid的queryparams属性

    图十三 传参数

    进行查询数据传回后台。

    图十四 数据加载

    如果不传送值那么Map的put方法里只传xml文件里条件参数不存在的字段名,或者直接传个空值。

    图十五 参数的用法

    添加和修改功能:

    1.通过opt参数设置0还是1判断是增加还是修改功能。0为添加,1为修改。页面是通过form表单的submit提交事件进行数据传回后台controller对应的方法。

    图十六 增加和修改设置

    删除功能:

    消息提示框(easyui自带)

    图十七   tab提示框

    判断是否已经选择一条数据。再通过post请求返回controller

    图十八 post请求

    此上URL.XXX是访问对应controller的路径。

    注:xml文件里 in的用法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

    foreach元素的属性主要有item,index,collection,open,separator,close。

    item表示集合中每一个元素进行迭代时的别名,

    index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,

    open表示该语句以什么开始,

    separator表示在每次进行迭代之间以什么符号作为分隔符,

    close表示以什么结束,

    在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:

    如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

    public List dynamicForeachTest(List ids);

    如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

    public List dynamicForeach2Test(int[] ids);

    如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key

    public  List dynamicForeach3Test(Map params);

    相关文章

      网友评论

          本文标题:三、后台java

          本文链接:https://www.haomeiwen.com/subject/rlowsftx.html