这节我给大家讲讲权限设置的问题,如果你是网站的站长你想把管理网站的的权限给普通的浏览者吗?如果被不同的浏览者都能访问的话,那么这个网站的就不用再干了(呵呵,跟大家讲个笑话)所以权限设置对于网站是至关重要的,我们来做最简的例子:通过容器进行验证。通过容器,的级别要不在数据库中写权限的级别要高一些。
我们先在tomcat的安装目录的webapps目录下创建一个security文件夹,里面有WEB-INF目录和protected目录,和一个index.jsp文件。Index.jsp的代码如下:
<script>
window.location="protected";
</script>
这里面只是一个简单的javascript脚本,意思是当你跳转到index.jsp文件,计算机自动调用本地的protected文件。
我们接下来在protected文件夹下创建一个三个jsp文件,三个jsp文件名分别是index.jsp,login.jsp,error.jsp,三个例子的代码都在下面的下载里,里面有详细的代码解释。
WEB-INF文件夹下有lib目录和classes目录,classes目录下有until目录,until目录下HTMLFilter.java和编译好的HTMLFilter.class文件。这是个转字符的类
HTMLFilter.java代码如下:
package util;
public final class HTMLFilter {
public static String filter(String message) {
if (message == null)
return (null);
char content[] = new char[message.length()];
message.getChars(0, message.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
default:
result.append(content[i]);
}
}
return (result.toString());
}}
这段代码代码应该能看懂,这段程序的主要功能就是把在你写入的字符转换为在网页显示的格式。等会你就知道他的好处了。
还有配置文档我打开web-xml 将以下代码复制到里面:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<security-constraint>
<display-name>Example Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>/protected/*</url-pattern>
<!-- If you list http methods, only those methods are protected -->
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- Default login configuration uses form-based authentication -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Example Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/protected/login.jsp</form-login-page>
<form-error-page>/protected/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>role1</role-name>
</security-role>
<security-role>
<role-name>tomcat</role-name>
</security-role>
</web-app>
所有的工作做好以后,你就可以调试这个程序了,你在浏览器的地址栏里敲入http://localhost:8080/security/index.jsp/ 当你回车的时候,你会发现地址栏发生了变化,变成了http://localhost:8080/security/protected/ 这就是上面我所讲到的脚本的作用。
我们在对话框里输入正确的用户名,我们可以从上面的web-xml配置文件里找到。那是tomcat,我们先用tomcat作为密码和用户名进行登录。当登录以后你可能会显示这个页面:
例子下载
你在输入权限里输入:tomcat然后敲击回车,网页会告诉你tomcat用户权限可用,而你敲入其他的用户名则每有权限。这就是一个简单的权限设置,而且是用容器进行设置的。这样我们对用户的权限就行了限制,具体的什么用户完成什么工作,那就的考大家的丰富的想象力了,这节我们就讲到这里,下节我们讲讲jsp的国际化问题。