风人园 -凯发k8网页登录

弱水三千,只取一瓢,便能解渴;佛法无边,奉行一法,便能得益。
随笔 - 99, 文章 - 181, 评论 - 56, 引用 - 0
数据加载中……



1. 使用spring security管理用户身份认证、登录退出

2. 用户密码加密及验证

3. 采用数据库的方式实现spring securityremember-me功能

4. 获取登录用户信息。

5.使用spring security管理url和权限

posted @ 风人园 阅读(291) | |  

     摘要:         // 自定义登录页面          http.csrf().disable().formlogin().loginpage("/login")  //指定登录页的路径&n...  

posted @ 风人园 阅读(409) | |  

                  

                  

                  

        

        

        

                  

                  

        

参考

posted @ 风人园 阅读(356) | |  

为了解决一些比较费时且不是很紧要的任务,将此任务转为异步任务处理,提高前端操作体验。 spring 中 自带注解 @async. 配置如下 applicationcontext.xml 中 增加 task的引用 如上配置之后,只需要在 需要进行异步调用的方法前面增加 注解就可以了。 @async public void updateorderbillitempqty(string deptid, string orderno, integer orderitemsid, double pqty) { 注:需要注意,同一个对象里面方法调用,不会作为异步方法执行。

posted @ 风人园 阅读(235) | |  


在对 textview 或者 edittext 进行赋值时,调用settext()方法,一定要注意,使用string类型,不要使用int 或者long,否则 会出现找不到资源的异常。系统自动会将int作为一个资源id,然后去r 里面找,结果找不到。

posted @ 风人园 阅读(111) | |  

     摘要: http://blog.csdn.net/meng425841867/article/details/8523730 在按键单击事件中添加创建对话框并设置相关属性。        [java] view plain copy dialogbutton=(button)findviewby...  

posted @ 风人园 阅读(452) | |  

     摘要: http://daoshud1.iteye.com/blog/1874241 本文讲实现一个自定义列表的android程序,程序将实现一个使用自定义的适配器(adapter)绑定 数据,通过contextview.settag绑定数据有按钮的listview。 系统显示列表(listview)时,首先会实例化一个适配器,本文将实例化一个自定义的适配器。实现 自定义适...  

posted @ 风人园 阅读(145) | |  

     摘要: http://blog.csdn.net/x605940745/article/details/11981049 simpleadapter的参数说明 第一个参数 表示访问整个android应用程序接口,基本上所有的组件都需要 第二个参数表示生成一个map(string ,object)列表选项 第三个参数表示界面布局的id  表示该文件作为列表项的组件&...  

posted @ 风人园 阅读(162) | |  

首先是布局文件,这里需要两个布局文件,一个是放置列表控件的activity对应的布局文件 main.xml,另一个是listview中每一行信息显示所对应的布局 list_item.xml 这一步需要注意的问题是listview 控件的id要使用android系统内置的 android:id="@android:id/list"

main.xml
xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
="match_parent"
    android:layout_height
="match_parent"
    android:orientation
="vertical" >
        
<listview 
        
android:id="@android:id/list"
        android:layout_width
="match_parent"
        android:layout_height
="match_parent"
        android:padding
="20dip"/>
linearlayout>

list_item.xml
xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width
="match_parent"
android:layout_height
="match_parent"
android:orientation
="horizontal">

<textview
android:id="@ id/user_name"
android:layout_width
="match_parent"
android:layout_height
="match_parent"
android:layout_weight
="1"/>
<textview
android:id="@ id/user_id"
android:layout_width
="match_parent"
android:layout_height
="match_parent"
android:layout_weight
="1"/>
linearlayout>


然后就设置mainactivity中的代码了:基本思想就是先将数据添加到arraylist中,然后在设置simpleadapter适配器完成设置,入下:

package com.example.android_newlistview;

import java.util.arraylist;
import java.util.hashmap;
import java.util.map;

import android.os.bundle;
import android.app.activity;
import android.app.listactivity;
import android.view.menu;
import android.widget.simpleadapter;

publicclass mainactivity extends listactivity {


string[] from
={"name","id"}; //这里是listview显示内容每一列的列名
int[] to={r.id.user_name,r.id.user_id}; //这里是listview显示每一列对应的list_item中控件的id

string[] username
={"zhangsan","lisi","wangwu","zhaoliu"}; //这里第一列所要显示的人名
string[] userid={"1001","1002","1003","1004"}; //这里是人名对应的id

arraylist
<hashmap<string,string>> list=null;
hashmap
<string,string> map=null;
@override
protectedvoid oncreate(bundle savedinstancestate) {
// todo auto-generated method stub
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
//为mainactivity设置主布局
//创建arraylist对象;
list=new arraylist<hashmap<string,string>>();
//将数据存放进arraylist对象中,数据安排的结构是,listview的一行数据对应一个hashmap对象,
//hashmap对象,以列名作为键,以该列的值作为value,将各列信息添加进map中,然后再把每一列对应
//的map对象添加到arraylist中

for(int i=0; i<4; i){
map
=new hashmap<string,string>(); //为避免产生空指针异常,有几列就创建几个map对象
map.put("id", userid[i]);
map.put(
"name", username[i]);
list.add(map);
}


//创建一个simpleadapter对象
simpleadapter adapter=new simpleadapter(this,list,r.layout.list_item,from,to);
//调用listactivity的setlistadapter方法,为listview设置适配器
setlistadapter(adapter);
}

}


另外对点击某一行作出响应的方法是覆写onlistitemclick方法,根据返回的position(从0开始):
@override
protectedvoid onlistitemclick(listview l, view v, int position, long id) {
// todo auto-generated method stub
super.onlistitemclick(l, v, position, id);
}


posted @ 风人园 阅读(131) | |  



单数据{'singer':{'id':01,'name':'tom','gender':'男'}} 
多个数据{"singers":[ 
        {'id':02,'name':'tom','gender':'男'}, 
         {'id':03,'name':'jerry,'gender':'男'}, 
{'id':04,'name':'jim,'gender':'男'}, 
{'id':05,'name':'lily,'gender':'女'}]}          
// 普通json数据解析 
    private void parsejson(string strresult) 
        
try 
            jsonobject jsonobj 
= new jsonobject(strresult).getjsonobject("singer"); 
            
int id = jsonobj.getint("id"); 
            string name 
= jsonobj.getstring("name"); 
            string gender 
= jsonobj.getstring("gender"); 
            tvjson.settext(
"id号"id  ", 姓名:"  name  ",性别:"  gender); 
        }
 catch (jsonexception e) 
            system.out.println(
"json parse error"); 
            e.printstacktrace(); 
        }
 
    }
 
    
//解析多个数据的json
   private void parsejsonmulti(string strresult) 
       
try 
            jsonarray jsonobjs 
= new jsonobject(strresult).getjsonarray("singers"); 
            string s 
= ""
            
for(int i = 0; i < jsonobjs.length() ; i)
                jsonobject jsonobj 
= ((jsonobject)jsonobjs.opt(i)).getjsonobject("singer"); 
                
int id = jsonobj.getint("id"); 
                string name 
= jsonobj.getstring("name"); 
                string gender 
= jsonobj.getstring("gender"); 
                s 
=  "id号"id  ", 姓名:"  name  ",性别:"  gender "\n" ; 
            }
 
            tvjson.settext(s); 
        }
 catch (jsonexception e) 
            system.out.println(
"jsons parse error !"); 
            e.printstacktrace(); 
        }
 
    }
 

posted @ 风人园 阅读(137) | |  

网站地图