struts2实现用户登录的简单权限控制.docx
- 文档编号:4763947
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:19
- 大小:137.04KB
struts2实现用户登录的简单权限控制.docx
《struts2实现用户登录的简单权限控制.docx》由会员分享,可在线阅读,更多相关《struts2实现用户登录的简单权限控制.docx(19页珍藏版)》请在冰豆网上搜索。
struts2实现用户登录的简单权限控制
struts2实现登录用户的简单的权限设置
声明:
由于代码过多,之摘下了添加用户权限和用户登录后所显示各自各有那些权限
一:
所需的数据库表和sql语句
[html]viewplaincopyprint?
1.--创建权限表
2.createtablesystem.purview
3.(
4.pvaluenumber(3)primarykey,
5.pnamevarchar2(20),
6.pmodulevarchar2(20)
7.);
8.
9.insertintosystem.purviewvalues(1,'添加','新闻');
10.insertintosystem.purviewvalues(2,'修改','新闻');
11.insertintosystem.purviewvalues(3,'删除','新闻');
12.insertintosystem.purviewvalues(4,'查询','新闻');
13.
14.insertintosystem.purviewvalues(5,'添加','公告');
15.insertintosystem.purviewvalues(6,'修改','公告');
16.insertintosystem.purviewvalues(7,'删除','公告');
17.insertintosystem.purviewvalues(8,'查询','公告');
18.
19.
20.--创建角色表
21.createtablesystem.roler
22.(
23.idvarchar2(20)primarykey,
24.ridvarchar2(20),
25.rnamevarchar2(20)
26.);
27.
28.createsequencesystem.roler_sequence
29.startwith1
30.incrementby1
31.nomaxvalue
32.cache20;
33.
34.createtriggersystem.roler_trigger
35.beforeinsert
36.onsystem.roler
37.foreachrow
38.when(new.idisnull)
39.begin
40.selectsystem.roler_sequence.nextvalinto:
new.idfromdual;
41.end;
--创建权限表
createtablesystem.purview
(
pvaluenumber(3)primarykey,
pnamevarchar2(20),
pmodulevarchar2(20)
);
insertintosystem.purviewvalues(1,'添加','新闻');
insertintosystem.purviewvalues(2,'修改','新闻');
insertintosystem.purviewvalues(3,'删除','新闻');
insertintosystem.purviewvalues(4,'查询','新闻');
insertintosystem.purviewvalues(5,'添加','公告');
insertintosystem.purviewvalues(6,'修改','公告');
insertintosystem.purviewvalues(7,'删除','公告');
insertintosystem.purviewvalues(8,'查询','公告');
--创建角色表
createtablesystem.roler
(
idvarchar2(20)primarykey,
ridvarchar2(20),
rnamevarchar2(20)
);
createsequencesystem.roler_sequence
startwith1
incrementby1
nomaxvalue
cache20;
createtriggersystem.roler_trigger
beforeinsert
onsystem.roler
foreachrow
when(new.idisnull)
begin
selectsystem.roler_sequence.nextvalinto:
new.idfromdual;
end;
1)roler表
2)purview表
二:
添加权限
1)添加角色jsp
[html]viewplaincopyprint?
1.<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
2.<%@pageisELIgnored="false"%>
3.<%@tagliburi="/struts-tags"prefix="s"%>
4.
5.
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
6.
7.
8.
9.
10.
11.
12.
13.
14.角色名
15.
权限
16.
17.
18.
19.
20. iteratorvalue="purviewList"var="pur"> 21. 22. iftest="${pur.pmodule=='新闻'}"> 23. 24.
if>
25.
26.
iterator>
27.
28.
29.
30.
31.
32.
33.
34.
35. iteratorvalue="purviewList"var="pur"> 36. 37. iftest="${pur.pmodule=='公告'}"> 38. 39.
if>
40.
41.
iterator>
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%@pageisELIgnored="false"%>
<%@tagliburi="/struts-tags"prefix="s"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
角色名
权限
iteratorvalue="purviewList"var="pur"> iftest="${pur.pmodule=='新闻'}">
if>
iterator>
iteratorvalue="purviewList"var="pur"> iftest="${pur.pmodule=='公告'}">
if>
iterator>
2)添加角色action
[html]viewplaincopyprint?
1.publicStringinsertDo(){
2.//获得角色名称和权限值
3.intp[]=roler.getPurview();
4.//调用service层
5.rolerService=newInsertRolerService();
6.intflag=rolerService.insert(roler);
7.returnSUCCESS;
8.}
publicStringinsertDo(){
//获得角色名称和权限值
intp[]=roler.getPurview();
//调用service层
rolerService=newInsertRolerService();
intflag=rolerService.insert(roler);
returnSUCCESS;
}
3)添加角色service
[html]viewplaincopyprint?
1.publicintinsert(InsertRolerBeanroler){
2.
3.//开始连接数据库
4.dbcon=newDBConnection();
5.sta=dbcon.getSta();
6.//取出所有选中的权限值,生成最终的权限值
7.longsum=0;
8.for(inti=0;i 9. 10.sum+=Math.pow(2,roler.getPurview()[i]);//getPurview是事先声明好的get和set方法,此数组用来接收前台所选的权限,Math.pow此发放为权限算法 11.} 12.sql="insertintoroler(rid,rname)values("+sum+",'"+roler.getRname()+"')"; 13. 14.try{ 15.flag=sta.executeUpdate(sql); 16. 17.}catch(SQLExceptione){ 18.//TODOAuto-generatedcatchblock 19.e.printStackTrace(); 20.} 21.returnflag; 22.} publicintinsert(InsertRolerBeanroler){ //开始连接数据库 dbcon=newDBConnection(); sta=dbcon.getSta(); //取出所有选中的权限值,生成最终的权限值 longsum=0; for(inti=0;i sum+=Math.pow(2,roler.getPurview()[i]);//getPurview是事先声明好的get和set方法,此数组用来接收前台所选的权限,Math.pow此发放为权限算法 } sql="insertintoroler(rid,rname)values("+sum+",'"+roler.getRname()+"')"; try{ flag=sta.executeUpdate(sql); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnflag; } 三: 根据用户查看此用户所具有的权限 1)查看用户所具有的权限页面 [html]viewplaincopyprint? 1.<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%> 2.<%@pageisELIgnored="false"%> 3.<%@tagliburi="/struts-tags"prefix="s"%> 4. 5. DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> 6. 7. 8. 9. 10. 11.
12.
13.用户名:
14.
15.
16.
17.
18.
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%@pageisELIgnored="false"%>
<%@tagliburi="/struts-tags"prefix="s"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
用户名:
2)查询用户所具有的权限action
[html]viewplaincopyprint?
1.publicStringgetByName(){
2.Stringname=roler.getRname();
3.//System.out.println("name-------------->"+name);
4.purviewService=newRolerService();
5.roler=purviewService.getByRname(name);
6.longrid=roler.getRid();
7.System.out.println("rid------------->"+rid);
8.
9.
10.purviewList=purviewService.getAll();
11.
12.lis=purviewService.getRoler(purviewList,rid);
13.
14.
15.lis=purviewService.getQX(lis);
16.
17.return"success";
18.}
publicStringgetByName(){
Stringname=roler.getRname();
//System.out.println("name-------------->"+name);
purviewService=newRolerService();
roler=purviewService.getByRname(name);
longrid=roler.getRid();
System.out.println("rid------------->"+rid);
purviewList=purviewService.getAll();
lis=purviewService.getRoler(purviewList,rid);
lis=purviewService.getQX(lis);
return"success";
}
3)查询用户所具有的权限service
a).getByRname方法,用来根据所登用户的名称得到rid字段
[html]viewplaincopyprint?
1.publicInsertRolerBeangetByRname(Stringrname){
2.dbcon=newDBConnection();
3.sta=dbcon.getSta();
4.
5.sql="selectid,rid,rnamefromrolertwheret.rname='"+rname+"'";
6.
7.try{
8.rs=sta.executeQuery(sql);
9.while(rs.next()){
10.rb=newInsertRolerBean();
11.rb.setId(rs.getInt("id"));
12.rb.setRid(rs.getLong("rid"));
13.rb.setRname(rs.getString("rname"));
14.
15.
16.}
17.}catch(SQLExceptione){
18.//TODOAuto-generatedcatchblock
19.e.printStackTrace();
20.}
21.
22.returnrb;
23.
24.}
publicInsertRolerBeangetByRname(Stringrname){
dbcon=newDBConnection();
sta=dbcon.getSta();
sql="selectid,rid,rnamefromrolertwheret.rname='"+rname+"'";
try{
rs=sta.executeQuery(sql);
while(rs.next()){
rb=newInsertRolerBean();
rb.setId(rs.getInt("id"));
rb.setRid(rs.getLong("rid"));
rb.setRname(rs.getString("rname"));
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnrb;
}
b).getAll()方法用来得到所有权限名称
[html]viewplaincopyprint?
1.publicListgetAll(){
2.purviewList=newArrayList();
3.//开始连接数据库
4.dbcon=newDBConnection();
5.sta=dbcon.getSta();
6.sql="selectpvalue,pname,pmodulefrompurview";
7.
8.try{
9.rs=sta.executeQuery(sql);
10.//循环打包
11.while(rs.next()){
12.RolerBeanpur=newRolerBean();
13.pur.setPvalue(rs.getInt("pvalue"));
14.pur.setPname(rs.getString("pname"));
15.pur.setPmodule(rs.getString("pmodule"));
16.purviewList.add(pur);
17.}
18.}catch(SQLExceptione){
19.//TODOAuto-generatedcatchblock
20.e.printStackTrace();
21.}finally{
22.dbcon.close();
23.
24.}
25.returnpurviewList;
26.}
publicListgetAll(){
purviewList=newArrayList();
//开始连接数据库
dbcon=newDBConnection();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- struts2 实现 用户 登录 简单 权限 控制