oracle的va、biee与cas集成(版本12c)

一、biee单点登录

注:12c的实现方式和11g的实现方式大致都差不多。所以可以参考以下11g的操作步骤,链接如下:

http://blog.csdn.net/biplusplus/article/details/7884268

按照上面的链接操作完后,会发现还需要做相关的验证。


接下来就特别说明一下12c和11g的区别:

如果你仔细研究过"analytics.war"中的"web.xml"配置文件,就会发现多了一个筛选器配置

  1. <filter>  
  2.       <filter-name>BISecurityFilter</filter-name>  
  3.       <filter-class>oracle.bi.security.filter.BISecurityFilter</filter-class>  
  4.       <init-param>  
  5.          <param-name>oracle.bi.security.filter.configuration.class</param-name>  
  6.          <param-value>com.siebel.analytics.web.SecurityFilterConfiguration</param-value>  
  7.       </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10.       <filter-name>BISecurityFilter</filter-name>  
  11.       <servlet-name>SAWBridge</servlet-name>  
  12. </filter-mapping>  
<filter>
      <filter-name>BISecurityFilter</filter-name>
      <filter-class>oracle.bi.security.filter.BISecurityFilter</filter-class>
      <init-param>
         <param-name>oracle.bi.security.filter.configuration.class</param-name>
         <param-value>com.siebel.analytics.web.SecurityFilterConfiguration</param-value>
      </init-param>
</filter>
<filter-mapping>
      <filter-name>BISecurityFilter</filter-name>
      <servlet-name>SAWBridge</servlet-name>
</filter-mapping>

正是因为这个筛选器所以失败了。


为了通过BISecurityFilter需要做如下的修改:

1、在BISecurityFilter筛选器前面添加一个“自定义筛选器”(作用:添加BISecurityFilter验证所需的cookie信息)

  1. <filter>  
  2.     <filter-name>CasForInvokeContextFilter</filter-name>  
  3.     <filter-class>CasForInvokeContextFilter</filter-class>  
  4. </filter>  
  5. <filter-mapping>  
  6.     <filter-name>CasForInvokeContextFilter</filter-name>  
  7.     <url-pattern>/*</url-pattern>  
  8. </filter-mapping>  
<filter>
	<filter-name>CasForInvokeContextFilter</filter-name>
	<filter-class>CasForInvokeContextFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>CasForInvokeContextFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>


2、创建筛选器类

  1. import java.io.IOException;  
  2. import javax.servlet.Filter;  
  3. import javax.servlet.FilterChain;  
  4. import javax.servlet.FilterConfig;  
  5. import javax.servlet.ServletContext;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. import javax.servlet.http.Cookie;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.   
  13. import oracle.bi.security.BISecurityException;  
  14. import oracle.bi.security.login.BISessionToken;  
  15. import oracle.bi.security.system.SystemUser;  
  16.   
  17. public class CasForInvokeContextFilter implements Filter {  
  18.   
  19.     ServletContext sc = null;  
  20.   
  21.     @Override  
  22.     public void destroy() {  
  23.     }  
  24.   
  25.     @Override  
  26.     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)  
  27.             throws IOException, ServletException {  
  28.         // 如果session中没有用户信息,则填充用户信息  
  29.   
  30.         HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;  
  31.         HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;  
  32.   
  33.         String userName = httpServletRequest.getRemoteUser();  
  34.         SystemUser systemUser = SystemUser.getInstance();  
  35.         String encodeName = null;  
  36.   
  37.         try {  
  38.             encodeName = systemUser.encryptWithSystemUserToken(userName);  
  39.         } catch (BISecurityException e) {  
  40.             e.printStackTrace();  
  41.         }  
  42.   
  43.         Cookie sessionCookie = getCookie(httpServletRequest, BISessionToken.BI_SESSION_ID_COOKIE_NAME);  
  44.         if (sessionCookie != null && sessionCookie.getMaxAge() != 0) {  
  45.             // do nothing  
  46.         } else {  
  47.             Cookie cookie = new Cookie(BISessionToken.BI_SESSION_ID_COOKIE_NAME, encodeName);  
  48.             httpServletResponse.addCookie(cookie);  
  49.             // 让浏览器刷新,因为下一个filter里取不到cookie还,需要刷新一下  
  50.             httpServletResponse.sendRedirect(httpServletRequest.getRequestURL().toString());  
  51.   
  52.             return;  
  53.         }  
  54.   
  55.         chain.doFilter(servletRequest, servletResponse);  
  56.   
  57.     }  
  58.   
  59.     @Override  
  60.     public void init(FilterConfig config) throws ServletException {  
  61.         sc = config.getServletContext();  
  62.     }  
  63.   
  64.     public Cookie getCookie(HttpServletRequest httpServletRequest, String name) {  
  65.         Cookie cookie = null;  
  66.   
  67.         if (httpServletRequest.getCookies() != null) { // 如果Cookie不为空  
  68.             for (Cookie ob : httpServletRequest.getCookies()) { // 遍历Cookie  
  69.                 if (ob.getName().equals(name)) {  
  70.                     cookie = ob;  
  71.                     break;  
  72.                 }  
  73.             }  
  74.         }  
  75.   
  76.         return cookie;  
  77.     }  
  78. }  
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import oracle.bi.security.BISecurityException;
import oracle.bi.security.login.BISessionToken;
import oracle.bi.security.system.SystemUser;

public class CasForInvokeContextFilter implements Filter {

	ServletContext sc = null;

	@Override
	public void destroy() {
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
			throws IOException, ServletException {
		// 如果session中没有用户信息,则填充用户信息

		HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
		HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;

		String userName = httpServletRequest.getRemoteUser();
		SystemUser systemUser = SystemUser.getInstance();
		String encodeName = null;

		try {
			encodeName = systemUser.encryptWithSystemUserToken(userName);
		} catch (BISecurityException e) {
			e.printStackTrace();
		}

		Cookie sessionCookie = getCookie(httpServletRequest, BISessionToken.BI_SESSION_ID_COOKIE_NAME);
		if (sessionCookie != null && sessionCookie.getMaxAge() != 0) {
			// do nothing
		} else {
			Cookie cookie = new Cookie(BISessionToken.BI_SESSION_ID_COOKIE_NAME, encodeName);
			httpServletResponse.addCookie(cookie);
			// 让浏览器刷新,因为下一个filter里取不到cookie还,需要刷新一下
			httpServletResponse.sendRedirect(httpServletRequest.getRequestURL().toString());

			return;
		}

		chain.doFilter(servletRequest, servletResponse);

	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		sc = config.getServletContext();
	}

	public Cookie getCookie(HttpServletRequest httpServletRequest, String name) {
		Cookie cookie = null;

		if (httpServletRequest.getCookies() != null) { // 如果Cookie不为空
			for (Cookie ob : httpServletRequest.getCookies()) { // 遍历Cookie
				if (ob.getName().equals(name)) {
					cookie = ob;
					break;
				}
			}
		}

		return cookie;
	}
}


注:里面有很多类都是来自下图中的包,例如: BISecurityException、BISessionToken、SystemUser



到此为止biee单点登录完成。




二、va单点登录

va和biee的差不多,biee需要操作的步骤va都要做,

不一样的是va中多了一个“weblogic容器资源保护机制”,仔细看“bitech-analysis-application-VASSO.ear--->bitech-analysis-webapp.war-->web.xml”,就会发现多了

以下配置:

  1. <login-config>  
  2.     <auth-method>CLIENT-CERT,FORM</auth-method>  
  3.     <form-login-config>  
  4.         <form-login-page>/login.jsp</form-login-page>  
  5.         <form-error-page>/login_failed.jsp</form-error-page>  
  6.     </form-login-config>  
  7. </login-config>  
  8. <security-constraint>  
  9.     <web-resource-collection>  
  10.         <web-resource-name>freepages</web-resource-name>  
  11.         <url-pattern>/progress.gif</url-pattern>  
  12.         <url-pattern>/login.jsp</url-pattern>  
  13.         <url-pattern>/login_bics10.jsp</url-pattern>  
  14.         <url-pattern>/api/v1/plugins/*</url-pattern>  
  15.         <url-pattern>  
  16.             /api/v1/plugins/registry/requirejsConfig.js  
  17.         </url-pattern>  
  18.         <url-pattern>/loginhelper.js</url-pattern>  
  19.         <url-pattern>/loginhelper.css</url-pattern>  
  20.         <url-pattern>/login_failed.css</url-pattern>  
  21.     </web-resource-collection>  
  22. </security-constraint>  
  23. <security-constraint>  
  24.     <web-resource-collection>  
  25.         <web-resource-name>*</web-resource-name>  
  26.         <url-pattern>/</url-pattern>  
  27.     </web-resource-collection>  
  28.     <auth-constraint>  
  29.         <role-name>valid-users</role-name>  
  30.     </auth-constraint>  
  31. </security-constraint>  
  32. <security-role>  
  33.     <role-name>valid-users</role-name>  
  34. </security-role>  
	<login-config>
		<auth-method>CLIENT-CERT,FORM</auth-method>
		<form-login-config>
			<form-login-page>/login.jsp</form-login-page>
			<form-error-page>/login_failed.jsp</form-error-page>
		</form-login-config>
	</login-config>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>freepages</web-resource-name>
			<url-pattern>/progress.gif</url-pattern>
			<url-pattern>/login.jsp</url-pattern>
			<url-pattern>/login_bics10.jsp</url-pattern>
			<url-pattern>/api/v1/plugins/*</url-pattern>
			<url-pattern>
				/api/v1/plugins/registry/requirejsConfig.js
			</url-pattern>
			<url-pattern>/loginhelper.js</url-pattern>
			<url-pattern>/loginhelper.css</url-pattern>
			<url-pattern>/login_failed.css</url-pattern>
		</web-resource-collection>
	</security-constraint>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>*</web-resource-name>
			<url-pattern>/</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>valid-users</role-name>
		</auth-constraint>
	</security-constraint>
	<security-role>
		<role-name>valid-users</role-name>
	</security-role>


该配置是weblogic用来保护资源的,即使已经通过单点登录了,也逃不了再次登录。

(我也尝试过去掉该验证,虽然去掉了,但是正真访问资源的时候,就会提示权限不够,估计是va项目中有相关的判断)


为了实现只登录一次,在原来的基础上做了如下修改:


1、在web.xml中添加新的筛选器(放在筛选器的最后面)

  1. <span style="white-space:pre">    </span><filter>  
  2.         <filter-name>ParameterFilter</filter-name>  
  3.         <filter-class>ParamFilter</filter-class>  
  4.     </filter>  
  5.     <filter-mapping>  
  6.         <filter-name>ParameterFilter</filter-name>  
  7.         <url-pattern>/login.jsp</url-pattern>  
  8.         <dispatcher>REQUEST</dispatcher>  
  9.         <dispatcher>FORWARD</dispatcher>  
  10.     </filter-mapping>  
<span style="white-space:pre">	</span><filter>
		<filter-name>ParameterFilter</filter-name>
		<filter-class>ParamFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>ParameterFilter</filter-name>
		<url-pattern>/login.jsp</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>

2、编写ParamFilter类

  1. import java.io.IOException;  
  2. import java.util.HashMap;  
  3. import java.util.Map;  
  4.   
  5. import javax.servlet.Filter;  
  6. import javax.servlet.FilterChain;  
  7. import javax.servlet.FilterConfig;  
  8. import javax.servlet.ServletException;  
  9. import javax.servlet.ServletRequest;  
  10. import javax.servlet.ServletResponse;  
  11. import javax.servlet.http.HttpServletRequest;  
  12.   
  13.   
  14. public class ParamFilter implements Filter {  
  15.   
  16.     @Override  
  17.     public void init(FilterConfig filterConfig) throws ServletException {  
  18.         // TODO Auto-generated method stub  
  19.   
  20.     }  
  21.   
  22.     @Override  
  23.     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  
  24.             throws IOException, ServletException {  
  25.           
  26.         Map<String, String[]> m = new HashMap<String, String[]>(request.getParameterMap());  
  27.         //添加用户名密码  
  28.         m.put("j_username"new String[]{"hwp"});  
  29.         m.put("j_password"new String[]{"123"});  
  30.           
  31.         request = new ParameterRequestWrapper((HttpServletRequest) request, m);  
  32.           
  33.           
  34.         chain.doFilter(request, response);  
  35.     }  
  36.   
  37.     @Override  
  38.     public void destroy() {  
  39.         // TODO Auto-generated method stub  
  40.   
  41.     }  
  42.   
  43. }  
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;


public class ParamFilter implements Filter {

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		
		Map<String, String[]> m = new HashMap<String, String[]>(request.getParameterMap());
		//添加用户名密码
		m.put("j_username", new String[]{"hwp"});
		m.put("j_password", new String[]{"123"});
		
		request = new ParameterRequestWrapper((HttpServletRequest) request, m);
		
		
		chain.doFilter(request, response);
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

}


  1. import java.util.Enumeration;  
  2. import java.util.Map;  
  3. import java.util.Vector;  
  4.   
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletRequestWrapper;  
  7.   
  8. class ParameterRequestWrapper extends HttpServletRequestWrapper {  
  9.   
  10.     private Map<String, String[]> params;  
  11.   
  12.     public ParameterRequestWrapper(HttpServletRequest request, Map<String, String[]> newParams) {  
  13.         super(request);  
  14.           
  15.         this.params = newParams;  
  16.   
  17.         // RequestDispatcher.forward parameter  
  18.         renewParameterMap(request);  
  19.           
  20.     }  
  21.   
  22.     @Override  
  23.     public String getParameter(String name) {  
  24.         String result = "";  
  25.   
  26.         Object v = params.get(name);  
  27.         if (v == null) {  
  28.             result = null;  
  29.         } else if (v instanceof String[]) {  
  30.             String[] strArr = (String[]) v;  
  31.             if (strArr.length > 0) {  
  32.                 result = strArr[0];  
  33.             } else {  
  34.                 result = null;  
  35.             }  
  36.         } else if (v instanceof String) {  
  37.             result = (String) v;  
  38.         } else {  
  39.             result = v.toString();  
  40.         }  
  41.   
  42.         return result;  
  43.     }  
  44.   
  45.     @Override  
  46.     public Map<String, String[]> getParameterMap() {  
  47.         return params;  
  48.     }  
  49.   
  50.     @Override  
  51.     public Enumeration<String> getParameterNames() {  
  52.         return new Vector<String>(params.keySet()).elements();  
  53.     }  
  54.   
  55.     @Override  
  56.     public String[] getParameterValues(String name) {  
  57.         String[] result = null;  
  58.   
  59.         Object v = params.get(name);  
  60.         if (v == null) {  
  61.             result = null;  
  62.         } else if (v instanceof String[]) {  
  63.             result = (String[]) v;  
  64.         } else if (v instanceof String) {  
  65.             result = new String[] { (String) v };  
  66.         } else {  
  67.             result = new String[] { v.toString() };  
  68.         }  
  69.   
  70.         return result;  
  71.     }  
  72.   
  73.     private void renewParameterMap(HttpServletRequest req) {  
  74.           
  75.         String queryString = req.getQueryString();  
  76.   
  77.         if (queryString != null && queryString.trim().length() > 0) {  
  78.               
  79.             String[] params = queryString.split("&");  
  80.   
  81.             for (int i = 0; i < params.length; i++) {  
  82.                 int splitIndex = params[i].indexOf("=");  
  83.                 if (splitIndex == -1) {  
  84.                     continue;  
  85.                 }  
  86.   
  87.                 String key = params[i].substring(0, splitIndex);  
  88.   
  89.                 if (!this.params.containsKey(key)) {  
  90.                     if (splitIndex < params[i].length()) {  
  91.                         String value = params[i].substring(splitIndex + 1);  
  92.                         this.params.put(key, new String[] { value });  
  93.                     }  
  94.                 }  
  95.             }  
  96.         }  
  97.           
  98.     }  
  99.   
  100. }  
import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

class ParameterRequestWrapper extends HttpServletRequestWrapper {

	private Map<String, String[]> params;

	public ParameterRequestWrapper(HttpServletRequest request, Map<String, String[]> newParams) {
		super(request);
		
		this.params = newParams;

		// RequestDispatcher.forward parameter
		renewParameterMap(request);
		
	}

	@Override
	public String getParameter(String name) {
		String result = "";

		Object v = params.get(name);
		if (v == null) {
			result = null;
		} else if (v instanceof String[]) {
			String[] strArr = (String[]) v;
			if (strArr.length > 0) {
				result = strArr[0];
			} else {
				result = null;
			}
		} else if (v instanceof String) {
			result = (String) v;
		} else {
			result = v.toString();
		}

		return result;
	}

	@Override
	public Map<String, String[]> getParameterMap() {
		return params;
	}

	@Override
	public Enumeration<String> getParameterNames() {
		return new Vector<String>(params.keySet()).elements();
	}

	@Override
	public String[] getParameterValues(String name) {
		String[] result = null;

		Object v = params.get(name);
		if (v == null) {
			result = null;
		} else if (v instanceof String[]) {
			result = (String[]) v;
		} else if (v instanceof String) {
			result = new String[] { (String) v };
		} else {
			result = new String[] { v.toString() };
		}

		return result;
	}

	private void renewParameterMap(HttpServletRequest req) {
		
		String queryString = req.getQueryString();

		if (queryString != null && queryString.trim().length() > 0) {
			
			String[] params = queryString.split("&");

			for (int i = 0; i < params.length; i++) {
				int splitIndex = params[i].indexOf("=");
				if (splitIndex == -1) {
					continue;
				}

				String key = params[i].substring(0, splitIndex);

				if (!this.params.containsKey(key)) {
					if (splitIndex < params[i].length()) {
						String value = params[i].substring(splitIndex + 1);
						this.params.put(key, new String[] { value });
					}
				}
			}
		}
		
	}

}

3、自定义登录页面login.jsp(作用:自动提交表单、用户名和密码来自后台)


  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@taglib prefix="userfn" uri="mytaglib"%>   
  4. <!DOCTYPE html>  
  5. <html>   
  6. <body>  
  7.       
  8.     <form name="forms1" action="j_security_check" method="POST" hidden="true">  
  9.         <input id="idUser" name="j_username" type="text" value="${userfn:getUserName(pageContext)}"  hidden="true"/>    
  10.         <input id="idPassword" name="j_password" type="password" value="${userfn:getUserPassword(pageContext)}"  hidden="true"/>   
  11.         <input type="submit" value="登录"  hidden="true">  
  12.     </form>  
  13.       
  14.   
  15.     <script type="text/javascript">  
  16.         document.forms1.submit();  
  17.     </script>  
  18.   
  19. </body>  
  20.   
  21. </html>  
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="userfn" uri="mytaglib"%> 
<!DOCTYPE html>
<html> 
<body>
	
	<form name="forms1" action="j_security_check" method="POST" hidden="true">
		<input id="idUser" name="j_username" type="text" value="${userfn:getUserName(pageContext)}"  hidden="true"/>  
		<input id="idPassword" name="j_password" type="password" value="${userfn:getUserPassword(pageContext)}"  hidden="true"/> 
		<input type="submit" value="登录"  hidden="true">
	</form>
	

	<script type="text/javascript">
		document.forms1.submit();
	</script>

</body>

</html>

在web.xml中添加标签配置

  1. <span style="white-space:pre">    </span><jsp-config>  
  2.         <taglib>  
  3.             <taglib-uri>mytaglib</taglib-uri>  
  4.             <taglib-location>/WEB-INF/userfn.tld</taglib-location>  
  5.         </taglib>  
  6.     </jsp-config>  
<span style="white-space:pre">	</span><jsp-config>
		<taglib>
			<taglib-uri>mytaglib</taglib-uri>
			<taglib-location>/WEB-INF/userfn.tld</taglib-location>
		</taglib>
	</jsp-config>


新增tld文件


  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
  4.     version="2.0">  
  5.     <tlib-version>1.0</tlib-version>  
  6.     <short-name>userfn</short-name>  
  7.     <function>  
  8.         <!--EL页面调用名字 -->  
  9.         <name>getUserName</name>  
  10.         <!--指定标签的处理类,指定了标签由哪个Java类来处理。 -->  
  11.         <function-class>taglib.function.UserFunction</function-class>  
  12.         <!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径 -->  
  13.         <function-signature>java.lang.String getUserName(javax.servlet.jsp.PageContext)</function-signature>  
  14.   
  15.     </function>  
  16.   
  17.     <function>  
  18.         <name>getUserPassword</name>  
  19.         <function-class>taglib.function.UserFunction</function-class>  
  20.         <function-signature>java.lang.String getUserPassword(javax.servlet.jsp.PageContext)</function-signature>  
  21.     </function>  
  22. </taglib>  
<?xml version="1.0" encoding="UTF-8" ?>
<taglib 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-jsptaglibrary_2_0.xsd"
	version="2.0">
	<tlib-version>1.0</tlib-version>
	<short-name>userfn</short-name>
	<function>
		<!--EL页面调用名字 -->
		<name>getUserName</name>
		<!--指定标签的处理类,指定了标签由哪个Java类来处理。 -->
		<function-class>taglib.function.UserFunction</function-class>
		<!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径 -->
		<function-signature>java.lang.String getUserName(javax.servlet.jsp.PageContext)</function-signature>

	</function>

	<function>
		<name>getUserPassword</name>
		<function-class>taglib.function.UserFunction</function-class>
		<function-signature>java.lang.String getUserPassword(javax.servlet.jsp.PageContext)</function-signature>
	</function>
</taglib>

新增tld的java类


  1. package taglib.function;  
  2.   
  3.   
  4.   
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.jsp.PageContext;  
  7.   
  8. public class UserFunction {  
  9.   
  10.     public static String getUserName(PageContext pCtx) {  
  11.         if (pCtx == null) {  
  12.             return "No Page Context";  
  13.         }  
  14.         HttpServletRequest req = (HttpServletRequest) pCtx.getRequest();  
  15.         if (req == null) {  
  16.             return "No Remote User Found";  
  17.         }  
  18.         String name = null;  
  19.         try {  
  20.             name = req.getParameter("j_username");  
  21.         } catch (Exception exp) {  
  22.             return exp.toString();  
  23.         }  
  24.         return name;  
  25.     }  
  26.       
  27.     public static String getUserPassword(PageContext pCtx) {  
  28.         if (pCtx == null) {  
  29.             return "No Page Context";  
  30.         }  
  31.         HttpServletRequest req = (HttpServletRequest) pCtx.getRequest();  
  32.         if (req == null) {  
  33.             return "No Remote User Found";  
  34.         }  
  35.         String password = null;  
  36.         try {  
  37.             password = req.getParameter("j_password");  
  38.         } catch (Exception exp) {  
  39.             return exp.toString();  
  40.         }  
  41.         return password;  
  42.     }  
  43.   
  44. }  
package taglib.function;



import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;

public class UserFunction {

	public static String getUserName(PageContext pCtx) {
		if (pCtx == null) {
			return "No Page Context";
		}
		HttpServletRequest req = (HttpServletRequest) pCtx.getRequest();
		if (req == null) {
			return "No Remote User Found";
		}
		String name = null;
		try {
			name = req.getParameter("j_username");
		} catch (Exception exp) {
			return exp.toString();
		}
		return name;
	}
	
	public static String getUserPassword(PageContext pCtx) {
		if (pCtx == null) {
			return "No Page Context";
		}
		HttpServletRequest req = (HttpServletRequest) pCtx.getRequest();
		if (req == null) {
			return "No Remote User Found";
		}
		String password = null;
		try {
			password = req.getParameter("j_password");
		} catch (Exception exp) {
			return exp.toString();
		}
		return password;
	}

}

到此va修改完成











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值