二级域名有返域名效果即可,url重写并非必须.
通过过滤器将主机头信息的用户名丢到参数里,对后台程序实现透明效果.
例如
应用程序里用 request.getParameter("username") 来获取用户名即可.
通过过滤器将主机头信息的用户名丢到参数里,对后台程序实现透明效果.
例如
- FilterChain filterChain) {
- try {
- javax.servlet.http.HttpServletRequestWrapper reqw = new javax.servlet.
- http.HttpServletRequestWrapper(
- (HttpServletRequest) request
- ) {
- public String getParameter(String name) {
- if ("username".equalsIgnoreCase(name)) {
- //从主机名头信息重获取信息
- String hostName = this.getServerName();
- if (hostName != null && hostName.endsWith("blog.sohu.com")) {
- String userName = hostName.substring(0,
- hostName.length() -
- "blog.sohu.com".length());
- System.out.println("解析出来的用户名为: " + userName);
- if (userName != null && userName.length() > 0) {
- return userName;
- }
- }
- return "www";
- }
- return super.getParameter(name);
- }
- };
- filterChain.doFilter(reqw, response);
- }
- catch (ServletException sx) {
- filterConfig.getServletContext().log(sx.getMessage());
- }
- catch (IOException iox) {
- filterConfig.getServletContext().log(iox.getMessage());
- }
- }
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
javax.servlet.http.HttpServletRequestWrapper reqw = new javax.servlet.
http.HttpServletRequestWrapper(
(HttpServletRequest) request
) {
public String getParameter(String name) {
if ("username".equalsIgnoreCase(name)) {
//从主机名头信息重获取信息
String hostName = this.getServerName();
if (hostName != null && hostName.endsWith("blog.sohu.com")) {
String userName = hostName.substring(0,
hostName.length() -
"blog.sohu.com".length());
System.out.println("解析出来的用户名为: " + userName);
if (userName != null && userName.length() > 0) {
return userName;
}
}
return "www";
}
return super.getParameter(name);
}
};
filterChain.doFilter(reqw, response);
}
catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
}
catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}
应用程序里用 request.getParameter("username") 来获取用户名即可.