跟我学如何应用WebLogic WorkShop设计J2EE Web程序(第7部分)
- 格式:pdf
- 大小:412.83 KB
- 文档页数:13
WebLogic部署J2EE程序图解WebLogic Server提供了三种方法来用于部署J2EE程序:☆自动部署:WebLogic Server将定期扫描<domain-name>/applications目录,以获取新的和更新的应用程序。
☆使用WebLogic.Deployer、WLShell和Ant wldeploy任务用于需要手动地重新部署的应用程序。
☆WebLogic Server管理控制台用于手动地重新部署应用程序。
下面主要介绍第三种方式,采用WebLogic Server管理控制台进行手动地重新部署应用程序。
一.打开WebLogic Server:WebLogic部署要用到WebLogic Server控制台,在打开控制台前,要先启动WebLogic Server:1.启动WebLogic Server:打开Tools→WebLogic Server→Start WebLogic Server,如下图:当看到下面几句话时,表示WebLogic Server已经启动:2.打开WebLogic Server控制台:Tools→WebLogic Server→WebLogic Console,如下图:进入到控制台登陆页面,然后登陆:(账号和密码都为weblogic)点击“Sign In”按钮,进入到:二.WebLogic归档文件的部署:1.Weblogic自动部署例如:在Weblogic中创建名称为Deploy_Test的应用程序,执行后,则在控制台中的应用程序部署中可以看到创建的应用程序已经部署,这是本地自动部署,WebLogic Server将定期扫描<domain-name>/applications目录,自动部署里面的应用程序。
2.本地部署在控制台页面中,进Domain Configurations下的Your Deployed Resources的Applications:到Deploy_Test的应用程序,如下:(其中10.1.16.110为Deploy_Test所在机器的IP地址,7001为端口号)3.远程部署:如果要进行远程部署,则要先准备归档文件,其打包格式一般为 .jar()、.war()、.rar()、.ear():Build Build EAR:在应用程序的文件夹下,生成打包文件Deploy_Test.ear:将A机器上面的Deplot_Test.ear打包文件拷贝到IP为10.1.16.198的B机器的文件夹test下,然后在B机器上打开Weblogic控制台对应用程序进行部署:http://10.1.16.198:7001/console 在控制台页面中进Information and Resources下的Helpful Tools的Deploy a new Application,然后进行本地部署操作,从给出的路径中找到test文件夹,选定要部署的归档文件:也可以点击Note中的upload your file(s)进行上传部署部署操作来上传归档文件:在通过上面的方法选定归档文件之后,然后Continue进入下页面:块的最新状态:点击“Deploy Application”按钮进行应用程序部署:当出现“Success”时表示已经部署成功。
1.1跟我学如何应用WebLogic WorkShop设计J2EE Web程序(第8部分)1.1.1利用单向 SSL 与基本身份验证实现传输安全1、概述(1)传输安全传输安全指使用一组安全技术,用于确保客户端和服务器的真实性,以及在Web 服务器及其客户端之间传递的数据的完整性和保密性。
在大多数情况下,仅使用传输安全即足以确保Web 应用程序或Web Service 等Web 资源的安全;(2)实现的方式●单向SSL----单向SSL 具备两个主要优点。
第一,对Web 服务器的标识进行身份验证。
第二,通过加密客户端与服务器之间的消息,可以确保通信的保密性。
单向SSL 中的“单向”是指仅对服务器的标识进行身份验证,而不对客户端的标识进行身份验证。
如果要确保通信的保密性,但客户端标识是非重要因素,则应使用单向SSL。
●单向SSL 与基本身份验证通过要求提供用户名和密码,基本身份验证可确保客户端标识的真实性。
基本身份验证应始终与单向SSL 配合使用,否则用户名和密码可能会被心怀恶意的第三方截取。
要同时确保客户端标识和服务器标识的真实性,应使用单向SSL。
●双向SSL通过客户端数字证书,双向SSL 将服务器身份验证、数据加密和客户端身份验证组合在一起。
2、单向SSL----Secure Sockets Layer(1)概述通过要求服务器向其客户端提供数字证书,以及对在服务器和客户端之间传递的数据进行加密,单向SSL 可以在Web 服务器和客户端之间设置安全连接。
(2)如何实现安全传输的目标单向SSL 的主要目标是由加密提供的完整性和保密性,以及由数字证书提供的服务器身份验证。
(3)实现单向SSL的基本要求要使用单向SSL 确保Web 资源的安全,必须在Web服务器以及Web的部署描述文件web.xml中进行如下的设置1)从可信任颁发机构获取数字证书或创建您自己的数字证书2)确保为WebLogic Server 启用了SSL3)通过启用HTTPS 的服务器端口公开该Web 资源4)配置WebLogic Server,以使用该Web 资源对数据流进行加密。
目录1.1跟我学如何应用WebLogic WorkShop设计J2EE Web程序(第1部分) (2)1.1.1WebLogic Workshop概述 (2)1.1.2如何创建出支持WebLogic WorkShop的Weblogic Domain (4)1.1.3启动支持WorkShop的Domain服务器 (12)1.1.4在WorkShop中创建Web应用程序 (15)1.1跟我学如何应用WebLogic WorkShop设计J2EE Web程序(第1部分)1.1.1WebLogic Workshop概述1、WebLogic Workshop的主要功能1)它是一种集成开发环境,用于在WebLogic Platform 上生成企业级的J2EE 应用程序。
WebLogic Workshop 提供了一个直观的程序设计模型,从而使您可以集中精力生成应用程序业务逻辑,而不用考虑复杂的实现细节。
不论您是要解决业务问题的应用程序开发人员,还是准备生成业务基础结构的J2EE 专家,WebLogic Workshop 都会使企业级应用程序的设计、测试和部署变得非常简易。
2)WebLogic Workshop 的直观用户界面使您可以直观地设计应用程序。
3)控件则使您更容易封装业务逻辑和连接到企业资源(如数据库和EnterpriseJavaBean),而无需编写大量代码。
4)对话用于处理对应用程序状态的跟踪作业。
5)WebLogic Workshop 对异步流程的支持,使您更容易为企业生成高度可靠的应用程序。
2、WebLogic Workshop 的组成(1)WebLogic Workshop 8.1 的独特性表现●统一性它是构建所有平台应用的一个IDE,一个框架和一种面向服务的方法,无论是构建Web 应用、Web 服务,还是构建门户和集成应用全都适用。
●简便性它使所有的开发人员都能够使用J2EE,而且变得更富有效率。
跟我学中间件相关技术及应用——基于J2EE架构的应用服务器Weblogic 的管理和维护1.1.1Weblgic应用服务器概述1、Weblogic应用服务器介绍(1)WebLobic应用服务器是美国BEA公司(现已属于Oracle公司)开发的一个业界领先的应用服务器WebLogic应用服务器遵守J2EE规范并采用面向服务的系统架构,提供有丰富的工具集支持,便于实现业务逻辑、数据和表达的分离,提供开发和部署各种业务驱动应用所必需的底层核心功能。
其综合性功能支持集成化基础结构,既能连接各种遗留系统,也能连接最新的Web 服务。
下图为BEA公司被Oracle公司收购后在Oracle公司的网站上发布的信息截图。
BEA公司被Oracle公司收购的信息截图(2)WebLogic应用服务器提供所有基本核心应用服务器的功能和服务这主要包括负载均衡、故障容错、Web 服务、网络透明、遗留集成、事务管理、安全性、消息、多线程,持久性、数据库连接、资源合并、开发、测试和封装功能等。
这种内置功能不但可以加速应用系统的开发实现,而且还可以减轻开发人员的负担,降低他们自主开发关键性服务的费用。
(3)WebLogic应用服务器的RMI实现支持三种通信格式:T3、T3/THHP和IIOP。
1)T3是一种经过WebLogic优化过的协议,用于在网络线路上传输远程方法调用,在访问EJB时将采用该T3协议。
2)T3/HTTP协议使RMI调用能够穿越只允许HTTP流通的防火墙(WebLogic中RMI调用使用的协议。
3)IIOP是一种CORBA通信协议,WebLogic 应用服务器支持的RMI/IIOP协议,允许Java程序与传统的CORBA系统进行通信。
上述三种协议都可以采用SSL加密方式,保证客户机与服务器之间的通信安全。
2、Weblogic应用服务器中的域(1)多层结构的WebLogic 应用服务器配置` WebLogic应用服务器层通常是一个由互相协调工作的多个WebLogic Server组成的群集。
1.1J2EE系统项目实现中的Web应用程序设计和实现实例(第1部分)1.1.1Web 层的设计1、Web表示层的整体规划一个网站项目的成功与否与建站前的网站整体规划有着极为重要的关系。
在建立网站前应明确建设网站的目的,确定网站的功能,确定网站规模、投入费用,进行必要的市场分析等。
只有详细的规划,才能避免在网站建设中出现的很多问题,使网站建设能顺利进行。
网站规划是指在网站建设前对同类网站进行分析、确定网站的目的和功能,并根据需要对网站建设中的技术、内容、测试、维护等做出规划。
网站规划对网站建设起到计划和指导的作用,对网站的内容和维护起到定位作用。
项目中的Web表示层中的网站规划的规则为:1)网页设计与本站的网站性质保持一致,网站整体颜色及其图片应用、版面规划,保持一致性2)采用新技术及其网站功能考虑到访问目标群体的分布地域、年龄阶层、网络速度、阅读习惯3)具有智能的、清楚简捷的网站导航系统;网站页面均具有返回到网站首页连接4)网站每页说明标题明确;并且网站内容连接、图片含有真正的文字说明5)网站首页容量小于30k;所有页面的登录速度保证快捷,页面容量(包含程序生成页面)基本都小于50K6)网页能够自适应分辨率(流行的800*600 1024*768);并且能够基本良好地支持各版本的Internet Explorer及其Navigator Explorer浏览器7)运行期间定期核实链接的正确性;核实程序运行地正确性;定期优化网站程序;增快网站运行速度8)设置公开地联系方式及其用户信息反馈专用论坛9)设置完善地用户社区系统;设置网站整体信息与用户为一体;设置完善地个性化地会员管理与交互系统10)要展现在线消费的魅力,产品、服务要有特色;完善的常见问题解答系统,完善的网站内容、网站用户检索系统2、Web页面的美工设计方面的要求1)网站的整体颜色:浅蓝色为导航颜色;主体颜色:浅蓝色+灰色+白色;红、黄色为活跃网站气氛色块2)网站浏览字体大小12px;字体:宋体;行距:130%;网站大字体大小14px;字体:宋体;行距:150%3)网站统一顶部为导航列表4)网站上中部:网站的logo;网站动态的轮换广告条;网站通用功能菜单【注册、登陆、注销、帮助】;5)网站智能导航系统:由不同图片来确定用户所在的版面【根据页面及其路径产生不同的连接条目】6)网站中部:网站主要显示的内容7)网站下底部:网站/版面友情连接、网站CI、网站版权、网站联系email3、本项目中的各个主要Web模块的首页风格说明4、Web网站个性化规划在我们的日常生活中个性化交流一直存在,网上个性化服务的概念也已经为大多数人所接受,个性化网页和个性化专辑,个性化信息中心;但是,事实证明,设计一个个性化网站具有很大的挑战性。
1.1如何应用MyEclipse开发工具进行J2EE Web应用系统开发的示例(第二部分)1.1.1在本Web工程中添加业务功能组件1、启动Java程序类创建向导2、在下面的对话框中设置类的信息,类名称为UserManagerBean,包名称为model3、编程业务类UserManagerBean中的功能实现程序代码package model;import java.sql.*;import dbmodel.OperateDBBean;public class UserManagerBean{public UserManagerBean(){}public boolean doUserLogin(String userName, String userPassWord){ResultSet rs=null;boolean OKandNot=false;OperateDBBean operateDBBean=new OperateDBBean();String selectSQL="select * from userInfo where userName='"+userName+"' and userPassWord='"+userPassWord+"'";try{rs = operateDBBean.QueryDBData(selectSQL);}catch(NullPointerException e){System.out.println("在userLogin方法中不能正确地产生ResultSet对象!");}try{if (rs.next()){OKandNot=true;}else{OKandNot=false;}}catch(SQLException e){System.out.println("不能正确地移动记录指针!");}return OKandNot;}}4、在本Web工程中添加数据访问组件(1)启动Java程序类创建向导(2)在下面的对话框中设置类的信息,类名称为OperateDBBean,包名称为dbmodel(3)编程数据访问类OperateDBBean中的功能实现代码package dbmodel;import java.sql.*;public class OperateDBBean{private java.sql.Connection con=null;ConnectDBBean connectDBBean=null;public OperateDBBean(){super();connectDBBean=new ConnectDBBean();con=connectDBBean.getConnection();}{connectDBBean.closeDBCon();}public ResultSet QueryDBData(String select_SqlStatement){ResultSet rs=null;try{java.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = pstmt.executeQuery();}catch(SQLException e){System.out.println("在查询数据库表时出现错误!");}return rs;}}5、在本工程中再添加数据连接类(1)启动Java程序类创建向导(2)设置类名称为ConnectDBBean,程序包名称为dbmodel(3)编程ConnectDBBean类中的功能实现代码package dbmodel;import java.sql.*;public class ConnectDBBean{String SQLServer_URL ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB";String SQLServer_DBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";String JDBC_ODBC_URL = "jdbc:odbc:WebStudyDSN";String JDBC_ODBC_DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";private java.sql.Connection con = null;public Connection getConnection(){return con;}public ConnectDBBean(){// this.SQLServer_Connect();this.Access_Connect();}public void Access_Connect(){try{Class.forName(this.JDBC_ODBC_DBDriver);}catch (ng.ClassNotFoundException e){System.out.println("不能正确地加载JDBC驱动程序");}try{con = DriverManager.getConnection(this.JDBC_ODBC_URL, "sa", "1234");}catch (java.sql.SQLException e){System.out.println("不能正确地连接数据库并且出现SQLException");}catch (NullPointerException e){System.out.println("不能正确地连接数据库并且出现NullPointerException");}}public void SQLServer_Connect(){try{Class.forName(this.SQLServer_DBDriver);}catch (ng.ClassNotFoundException e){System.out.println("不能正确地加载JDBC驱动程序");}try{con = DriverManager.getConnection(this.SQLServer_URL, "sa", "1234");}catch (java.sql.SQLException e){System.out.println("不能正确地连接数据库并且出现SQLException");}catch (NullPointerException e){System.out.println("不能正确地连接数据库并且出现NullPointerException");}}public void closeDBCon(){try{con.close();}catch (SQLException e){System.out.println("不能正确地关闭数据库连接");}}}6、修改控制层FirstServlet程序类中的相关代码package webservlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import erManagerBean;public class FirstServlet extends HttpServlet{public FirstServlet(){super();}public void destroy(){super.destroy(); // Just puts "destroy" string in log}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the GET method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();String userName = request.getParameter("userName").trim();String userPassWord = request.getParameter("userPassWord").trim();boolean OkOrNot = false;UserManagerBean userManagerBean= new UserManagerBean();OkOrNot = userManagerBean.doUserLogin(userName,userPassWord);if (OkOrNot){out.print("登录成功");}else{out.print("登录失败");}}public void init() throws ServletException{}}7、在该Web应用中再添加一个Filter组件程序类(1)其功能主要实现将表单中的中文进行编码转换由于目前在MyEclipse中还没有提供对Filter的可视化的设计的支持,因此利用Servlet 模板来产生Filter程序。
如何应用MyEclipse开发工具进行J2EE Web应用系统开发的示例(第一部分)1.1.1熟悉和了解MyEclipse中的J2EE Web工程1、MyEclipse Web Project的含义A MyEclipse Web Project is an Eclipse Java Project that includes metadata that defines the project's web nature and a directory structure patterned after the J2EE web archive (WAR) structure。
2、Web Project的目录结构(1)src目录在scr目录中放置java后台源代码(包括类和接口)(2)WebRoot目录在WebRoot中放置页面设计文件、classes和lih目录。
(3)Web Project的目录结构示例1.1.2利用MyEclipse来创建出一个Web工程1、执行Web项目创建菜单(1)选择File中的new菜单项目,然后再选择其中的Project子菜单项目。
(2)选择J2EE Projects的Web Project点击project后,MyEclipse弹出工程的对话框,我们在所罗列的工程中选中MyEclipse 下面的J2EE Projects的Web Project。
2、输入Projecr的一些信息在Wizard的下一页,必要的输入信息是Project Name----本例为webbank、Web root folder----本例为WebRoot,Context root URL----本例为“/webbank”。
其中的Location是指我们的工作目录, 我们可以选择默认的, 也可以指向自己想要的路径;并选择需要JSTL标签库的系统库文件。
最后点击finish后将出现下面的提问,一个空的Web Project就已经建立起来了----MyEclipse会为我们创建Web Application的目录结构以及web.xml等所需的文件。
1.1在Web应用中使用WebLogic的数据源的应用实例下面通过设计一个通用的访问数据库表中的数据的Web应用程序,以进一步掌握如何使用Weblogic中的数据源。
1、在JBuilder中开发部署到WebLogic服务器中的Web应用程序(1)新建一个Project,名称为UserDSInWeb(2)设置该项目的服务器为Weblogic(3)在该项目中添加一个Web应用程序,名称为WeblogicWeb最后将产生下面的空的Web应用组件(4)在该Web应用程序中添加一个JSP页面文件,名称为index.jsp将出现下面的空页面,并加入一个提示文本“本页面实现对WebLogic中的数据源进行测试”(5)在该Web应用中再添加一个Servlet程序●名称为WebServlet,包名称为userdsinweb●其URL Pattern为/webservlet(6)编程该Servlet程序以接收从页面所传递来的参数package userdsinweb;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.sql.*;import javax.sql.*;import javax.naming.*;public class WebServlet extends HttpServlet{private static final String CONTENT_TYPE = "text/html; charset=GBK";public void init() throws ServletException{}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{response.setContentType(CONTENT_TYPE);PrintWriter out = response.getWriter();String dbTableName=request.getParameter("dbTableName"); //获得从JSP所传递来的参数if(dbTableName==null){dbTableName="authors"; //如果在JSP页面中没有提供参数,将采用缺省参数}try{java.util.Properties h = new java.util.Properties();h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");h.put(Context.PROVIDER_URL, "t3://localhost:7001");Context ctx = new InitialContext(h);//SqlServer2000JNDI是Data Souce的JNDI Namejavax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("SqlServer2000JNDI");Connection conn =ds.getConnection();Statement stmt = conn.createStatement();String strSql = " select * from "+dbTableName;ResultSet rs = stmt.executeQuery(strSql);out.println("<html>");out.println("<head><title>WebServlet</title></head>");out.println("<body bgcolor=\"#ffffff\">");out.print("<table border='1' width='780' align='center'>");out.print("<tr>");for(int column = 0; column < rs.getMetaData().getColumnCount(); column++){out.print("<td>");out.print(rs.getMetaData().getColumnLabel(column+1));out.print("</td>");}out.print("</tr>");while(rs.next()){out.print("<tr>");for(int column = 0; column < rs.getMetaData().getColumnCount();column++){out.print("<td>");out.print(rs.getObject(column+1));out.print("</td>");}out.print("</tr>");}out.print("</table>");out.println("</body></html>");conn.close();}catch(Exception ex){out.print("出现例外,信息是:"+ex.getMessage());ex.printStackTrace();}}public void destroy(){}}(7)修改index.jsp在index.jsp页面中添加一个表单,并且向该Servlet程序提交通<%@ page contentType="text/html; charset=GBK" %><html><head><title> 本页面实现对WebLogic中的数据源进行测试</title></head><body bgcolor="#ffffff"><form method="post" action="/WeblogicWeb/webservlet" name="callServletIDForm"><table width="272" border="1"><tr><td colspan="2">请选择您所需要查看的数据库表名称</td></tr><tr><td width="120"><div align="center"><select name="dbTableName"><option value="authors" selected>authors</option><option value="discounts">discounts</option><option value="pub_info">pub_info</option><option value="publishers">publishers</option><option value="sales">sales</option><option value="stores">stores</option><option value="titleauthor">titleauthor</option><option value="titles">titles</option></select></div></td><td width="136"><div align="center"><input type="submit" name="Submit" value="提交到Servlet中"> </div></td></tr></table></form></body></html>2、编译和部署本Web应用(1)编译本Web应用(2)部署本Web应用3、浏览本Web应用输入http://127.0.0.1:7001/WeblogicWeb/index.jsp将产生下面的查询结果1.2将 WebLogic的数据源设计为资源引用项目1、web.xml文件中的<resource-ref>标签为了避免在web应用的各种组件中直接出现weblogic的数据源的JNDI名称,可将该JNDI 名称设计为Web应用中的资源引用。
BEA WebLogic Workshop使用笔记之三--Web应用篇作者:李巍来源:dev2dev续EJB开发篇,通过本文的学习,读者将能领会在WebLogic Workshop上的Pageflow应用开发。
本文,我们需要建立一个简单的Web应用,提供相应的友好界面来调用刚开发完毕EJB组件,在这个web应用中我们要使用到Pageflow。
什么是Page FlowPage Flow是一个基于Struts1.1的web应用编程模型,替代了早期Portal产品中的web flow,不再属于Portal专有,用以实现web应用中用户界面、业务逻辑、导航控制的分离,并且大大简化了WEB应用的开发过程,提高了开发效率为什么要使用Page Flow?企业的WEB应用经常由成千上万的页面组成,维护这样一个网站通常是一件复杂、枯燥、耗时的任务。
Page Flow 提供了一个易使用的框架结构来建立动态、复杂的WEB应用;并且通过用户界面、业务逻辑、导航控制的分离,避免了Web开发中经常出现的一些问题,提高了业务逻辑代码的可重用性。
Page Flow 的编程模型沿用了Struts Model 2 的MVC模型模型(Model M)组成部分该部分可以由Custom Control文件(*.jcs), Java Control文件(*.jcx), Web Service文件(*.jws)或Process文件(*.jpd)等文件装配而成。
视图(View V)由*.jsp等文件来实现控制器(Controller C)由Java Page Flow文件(*.jpf )来实现关于Page flow的更多信息请参考dev2dev中文站点上的这篇文档:BEA Workshop8.1之Java Page Flow介绍by Doug Dew,Java Page Flow项目经理建立Pageflow我们在上一章中建好的EJBTest项目上继续Web应用的开发,右键点击EJBTest项目,选择"new"一个"Page Flow"在Design View中将index.jsp页面删除,只留下Begin按钮,然后将myControl控件的"finderByCompanyName"方法拓展到Design View中,它将在这个Pageflow中成为一个带Form Bean的action"finderByCompanyName",同时这个Form Bean也显示在Form Beans选项版中(Form Bean是Page Flow中的数据的承载体,其一个作用是用于页面中的form提交时存储form中的数据,其实质是一个Java Bean)右键点击刚生成的action,选择"Generate Input Page"选项,Workshop将根据你action的Form Bean的参数,自动生成一个输入页面finderByCompanyNamePage.jsp。
1.1跟我学如何应用WebLogic WorkShop设计J2EE Web程序(第7部分)1.1.1在Weblogic8中进行用户安全区的配置1、在Weblogic中进行用户安全区的配置缺省方式下的安全验证提供者已配置,且安全策略存在内含的LDAP服务器内。
这个LDAP 服务器是Weblogic内含的并且适合小型应用。
(1)在WebLogic的管理控制台中选择“ Security”---> “Realms”→“myrealm”(2)在安全区中增加一个本Web应用程序所需要的用户组,在该组内定义用户●点击“Groups”节点●然后再点击“Configure a new Group...”连接,将进入新建用户组的界面输入组名称为:WebJSPStudy在Description中输入对该组的描述文字:“JSPStudy Web项目中用户自己的组”●点击“Apply”按钮将创建出该组(3)在WebJSPStudy组内增加一个用户WebAdmin(也可以增加多个用户)●点击Users节点,然后再点击“Configure a new User...”连接●在Name中输入:WebAdmin在Description中输入:JSPStudy的Web管理员在Password:中输入:12345678(要求8位以上)在Confirm Password:中输入:12345678(要求8位以上)再点击“Apply”按钮将创建出该用户注意:点击上面的“Password: Change...”的链接可以修改该用户的密码然后在Groups页中设置该用户所属的组名,本用户属于“WebJSPStudy”组(从左边选择到右边)最后点击“Apply”按钮以提交,从而创建出该用户。
1.1.2在WorkShop的Web项目实现基本身份验证1、实现的主要步骤为基本身份验证所配置的Web 资源需要它的客户端提供用于访问Web 资源的有效用户名和密码。
要配置Web 资源以便使用基本身份验证,您需要做下面的事情1)在Web项目中设计所保护的Web资源2)在web.xml中定义希望要保护的Web 资源(请见前面的内容说明)的配置项目3)将Web 资源配置为要求提供用户名和密码。
注意:单独的基本身份验证不足以提供对Web 资源的保护。
原因是,单独基本身份验证允许用户名和密码通过HTTP 协议传输,而此协议仅使用64 位加密来隐藏用户名和密码,这样,恶意用户很容易对消息进行截获并解码。
因此,您应该始终将基本身份验证与SSL 一同使用,因为SSL 使用128 位加密。
2、在Web项目中设计所保护的Web资源(1)在Web项目(本例为JSPStudy)中增加一个子文件夹,只需要右击JSPStudy项目的名称输入子文件夹的名称为ProtectedDirOne,并点“OK”按钮以创建出该子文件夹(2)在该受保护的子文件夹中再增加一个受保护的JSP页面文件右击所创建出的名称为ProtectedDirOne的子文件夹,然后选择所要创建的文件类型为“JSP File”该页面的文件名称为protectedPage.jsp,并点击“Create”按钮以创建出该页面文件。
(3)编辑该JSP页面以增加一些提示内容<!--Generated by WebLogic Workshop--><%@ page language="java" contentType="text/html;charset=UTF-8"%><%@ taglib uri="netui-tags-databinding.tld" prefix="netui-data"%><%@ taglib uri="netui-tags-html.tld" prefix="netui"%><%@ taglib uri="netui-tags-template.tld" prefix="netui-template"%><netui:html><head><title>This is Protected Page in JSPStudy Web Application</title></head><body><h1>这是被保护的资源ProtectedDirOne目录内的页面内容</h1></body></netui:html>3、将Web 资源配置为要求提供用户名和密码如果要求用户在访问某一资源时提供用户名和密码,则需要编辑项目的WEB-INF/web.xml 文件和weblogic.xml文件中并完成下面的主要的设置。
(1)在Web应用程序的web.xml文件中添加如下的标签定义出安全角色<security-role><description>this is a user</description><role-name>JSPStudyWebUserRole</role-name></security-role>安全角色代表具有相同安全权限用户的集合,上面的内容定义出一个名称为JSPStudyWebUserRole的角色(我们自己定义的,在WebLogic的服务器中也预定义了一些全局角色。
如下面的图示)。
●指定验证方式为基本验证方式,这意味着你将通过基本的HTTP验证方式验证用户<login-config><auth-method>BASIC</auth-method><realm-name>Default</realm-name></login-config>●定义出被保护的资源:下面的内容声明出只有JSPStudyWebUserRole角色的用户才能访问被保护的资源<security-constraint><web-resource-collection><web-resource-name>SensitiveResources </web-resource-name><description>A Collection of Sensitive Resources </description><url-pattern>/ProtectedDirOne/protectedPage.jsp</url-pattern><http-method>GET</http-method><http-method>POST</http-method></web-resource-collection><auth-constraint><role-name>JSPStudyWebUserRole</role-name></auth-constraint></security-constraint>注意:上面是采用<auth-constraint>元素来授权某一角色所能够访问的资源<auth-constraint> 元素("authorization" constraint 的缩写)通知WebLogic Server 框架:用户必须是可访问Web 资源的某个角色的成员。
为了确定用户的角色映射标识,WebLogic Server 将要求用户提供用户名和密码。
最后的完整内容如下:<web-app>…. //其它的标签项目请见原web.xml的内容,只需要将Basic基本验证方式所需要的标签放在<taglib>后面就可以<taglib><taglib-uri>netui-tags-template.tld</taglib-uri><taglib-location>/WEB-INF/netui-tags-template.tld</taglib-location></taglib><security-constraint><web-resource-collection><web-resource-name>SensitiveResources </web-resource-name><description>A Collection of Sensitive Resources </description><url-pattern>/ProtectedDirOne/protectedPage.jsp</url-pattern><http-method>GET</http-method><http-method>POST</http-method></web-resource-collection><auth-constraint><role-name>JSPStudyWebUserRole</role-name></auth-constraint><user-data-constraint><description>This is how the user data must be transmitted</description><transport-guarantee>NONE </transport-guarantee></user-data-constraint></security-constraint><login-config><auth-method>BASIC</auth-method><realm-name>Default</realm-name></login-config><security-role><description>this is a JSPStudy Web User</description><role-name>JSPStudyWebUserRole</role-name></security-role></web-app>注意:web.xml文件中的各个项目的前后顺序应该是如下,否则会出现解释错误:icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener *,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*(2)在weblogic.xml文件中映射如果使用了<auth-constraint> 元素,则应当在web.xml 中使用<security-role>声明角色(请见上述示例),并且在weblogic.xml文件中至少将一个委托人(组或单独用户,本例为前面在WebLogic服务器中所设置的用户组WebJSPStudy)映射到该JSPStudyWebUserRole角色。