实战Struts-Menu(4)
/**
* 从数据库中读取菜单配置信息
*
* @return
*/
private Map[] getMenuComponents() {
ArrayList list = new ArrayList();
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rest = null ;
String sql = " select name,parent_name,title,location,description from menu_item order by id " ;
try {
Class.forName( " com.mysql.jdbc.Driver " ).newInstance();
conn = DriverManager.getConnection( " jdbc:mysql://localhost/myexamples?user=root&password=mywangya&useUnicode=true&characterEncoding=UTF-8 " );
pstmt = conn.prepareStatement(sql);
rest = pstmt.executeQuery();
while (rest.next()) {
int i = 1 ;
HashMap map = new HashMap();
map.put( " name " , rest.getString(i ++ ));
map.put( " parent_name " , rest.getString(i ++ ));
map.put( " title " , rest.getString(i ++ ));
map.put( " location " , rest.getString(i ++ ));
map.put( " description " , rest.getString(i ++ ));
list.add(map);
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if ( null != rest) rest.close();
if ( null != pstmt) pstmt.close();
if ( null != conn) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return (Map[]) list.toArray( new HashMap[ 0 ]);
}
/**
* 构造菜单权限
*
* @param request
*/
private void buildMenuPermissions(HttpServletRequest request) {
PermissionsAdapter permession = new PermissionsAdapter() {
public boolean isAllowed(MenuComponent menu) {
// 名称等于StandaloneMenu的菜单不显示
return ! " StandaloneMenu " .equalsIgnoreCase(menu.getName());
}
};
request.setAttribute( " examplesPermession " , permession);
}
/**
* 构造菜单显示标题
*
* @param request
*/
private void buildMenuResourceBundle(HttpServletRequest request) {
MenuResourceBundle resourceBundle = new MenuResourceBundle();
request.setAttribute( " examplesBundle " , resourceBundle);
}
/**
* MenuResourceBundle树状菜单国际语言显示
*
* @author wenbin.zhang
*
*/
class MenuResourceBundle extends ListResourceBundle {
private ArrayList list = new ArrayList();
public MenuResourceBundle() {
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rest = null ;
String sql = " select title,titleCN from menu_item order by id " ;
try {
Class.forName( " com.mysql.jdbc.Driver " ).newInstance();
conn = DriverManager.getConnection( " jdbc:mysql://localhost/myexamples?user=root&password=mywangya&useUnicode=true&characterEncoding=UTF-8 " );
pstmt = conn.prepareStatement(sql);
rest = pstmt.executeQuery();
while (rest.next()) {
int i = 1 ;
String[] message = new String[ 2 ];
message[ 0 ] = rest.getString(i ++ );
try {
message[ 1 ] = new String(rest.getString(i ++ ).getBytes( " latin1 " ), " gbk " );
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (message[ 0 ] != null && message[ 1 ] != null ) {
list.add(message);
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if ( null != rest) rest.close();
if ( null != pstmt) pstmt.close();
if ( null != conn) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public Object[][] getContents() {
return (String[][]) list.toArray( new String[ 0 ][ 0 ]);
}
}
}
> 将struts-config.xml文件的<action-mappings />部分修改为:
* 从数据库中读取菜单配置信息
*
* @return
*/
private Map[] getMenuComponents() {
ArrayList list = new ArrayList();
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rest = null ;
String sql = " select name,parent_name,title,location,description from menu_item order by id " ;
try {
Class.forName( " com.mysql.jdbc.Driver " ).newInstance();
conn = DriverManager.getConnection( " jdbc:mysql://localhost/myexamples?user=root&password=mywangya&useUnicode=true&characterEncoding=UTF-8 " );
pstmt = conn.prepareStatement(sql);
rest = pstmt.executeQuery();
while (rest.next()) {
int i = 1 ;
HashMap map = new HashMap();
map.put( " name " , rest.getString(i ++ ));
map.put( " parent_name " , rest.getString(i ++ ));
map.put( " title " , rest.getString(i ++ ));
map.put( " location " , rest.getString(i ++ ));
map.put( " description " , rest.getString(i ++ ));
list.add(map);
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if ( null != rest) rest.close();
if ( null != pstmt) pstmt.close();
if ( null != conn) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return (Map[]) list.toArray( new HashMap[ 0 ]);
}
/**
* 构造菜单权限
*
* @param request
*/
private void buildMenuPermissions(HttpServletRequest request) {
PermissionsAdapter permession = new PermissionsAdapter() {
public boolean isAllowed(MenuComponent menu) {
// 名称等于StandaloneMenu的菜单不显示
return ! " StandaloneMenu " .equalsIgnoreCase(menu.getName());
}
};
request.setAttribute( " examplesPermession " , permession);
}
/**
* 构造菜单显示标题
*
* @param request
*/
private void buildMenuResourceBundle(HttpServletRequest request) {
MenuResourceBundle resourceBundle = new MenuResourceBundle();
request.setAttribute( " examplesBundle " , resourceBundle);
}
/**
* MenuResourceBundle树状菜单国际语言显示
*
* @author wenbin.zhang
*
*/
class MenuResourceBundle extends ListResourceBundle {
private ArrayList list = new ArrayList();
public MenuResourceBundle() {
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rest = null ;
String sql = " select title,titleCN from menu_item order by id " ;
try {
Class.forName( " com.mysql.jdbc.Driver " ).newInstance();
conn = DriverManager.getConnection( " jdbc:mysql://localhost/myexamples?user=root&password=mywangya&useUnicode=true&characterEncoding=UTF-8 " );
pstmt = conn.prepareStatement(sql);
rest = pstmt.executeQuery();
while (rest.next()) {
int i = 1 ;
String[] message = new String[ 2 ];
message[ 0 ] = rest.getString(i ++ );
try {
message[ 1 ] = new String(rest.getString(i ++ ).getBytes( " latin1 " ), " gbk " );
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (message[ 0 ] != null && message[ 1 ] != null ) {
list.add(message);
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if ( null != rest) rest.close();
if ( null != pstmt) pstmt.close();
if ( null != conn) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public Object[][] getContents() {
return (String[][]) list.toArray( new String[ 0 ][ 0 ]);
}
}
}
<
action-mappings
>
< action path ="/menuAction" type ="cn.appex.menu.MenuAction" >
< forward name ="success" path ="/struts-menu/dynamic-menu.jsp" />
</ action >
</ action-mappings >
< action path ="/menuAction" type ="cn.appex.menu.MenuAction" >
< forward name ="success" path ="/struts-menu/dynamic-menu.jsp" />
</ action >
</ action-mappings >