最近,客户要求项目都是https的协议,后来服务器就加上了负载均衡将web发出的https协议转化成http协议。实际上tomcat服务器使用的还是http来接受请求的,所以只能配置Struts和一些重定向请求。
一、过程(
1.升级Struts2,我用的时候必须struts必须是2.1.18版本以上(包括2.1.18),主要是替换两个包,一个是struts2-core-2.x.xx.jar,一个是xwork-core-2.x.xx.jar,替换这两个包。必要时要删除struts2-codebehind-plugin-2.x.xx.jar这几个插件包,不然会报错
2.加入struts2-ssl-plugin.jar这个包,并在struts加入相应的代码,可以参考这儿。
)1、 在Struts.xml中加上如下的设置:
<constant name="struts2.sslplugin.httpPort" value="8080"/> //对应tomcat http协议请求的端口号
<constant name="struts2.sslplugin.httpsPort" value="8443"/> //对应tomcat https协议请求的端口号
<constant name="struts2.sslplugin.annotations" value="true"/>
<package name="stu" namespace="/" extends="ssl-default,json-default"> //必须继承ssl-default
注:不要添加ssl的拦截器,否则无法获取request的信息(cookie)。
2、 之后在使用到ssl方法前或是action钱加上注释就ok了。
@Secured
public String login() throw Exception{
........
return SUCCESS;
}
@Secured
public class UserAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{
........
各种方法
}
jsp页面的base标签是一个基链接标记,是一个单标记。用以改变文件中所有连结标记的参数内定值。它只能应用于标记<head>与</head>之间。
你网页上的所有相对路径在链接时都将在前面加上基链接指向的地址。
jsp页面可以定义:<% String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
在head标签后加上<base href="<%=basePath%>" >即可。