Java实现http与https切换

Java实现http与https切换
Java实现http与https切换

Java实现http与https切换

Java支持Https需要配置相关步骤如下: 1.从Http跳转到Https添加jar包1.加入struts2-ssl-plugin.jar这个包,2.升级Struts2,struts必须是2.1.18版本以上配置Tomcat服务器支持HTTPS 1.生成证书首先用jdk自带的工具keytool生成一个"服务器证书"。C:/Program

Files/Java/jre1.5.0_04/bin> keytool -genkey -alias safetomcat -keyalg RSA -keystore c:/leadsec -validity 2000输入keystore

密码:leadsec您的名字与姓氏是什么?[Unknown]:

10.50.10.188您的组织单位名称是什么?[Unknown]:Lenovo您的组织名称是什么?[Unknown]:Lenovo您所在的城市或区域名称是什么?[Unknown]:Beijing您所在的州或省份名称是什么?[Unknown]:Beijing该单位的两字母国家代码是什么[Unknown]:CNCN=10.50.10.188, OU= Lenovo, O= Lenovo, L=Beijing, ST=Beijing, C=CN正确吗?[否]:y输入<safetomcat>的主密码(如果和keystore 密码相同,按回车):经过上述操作后,获得文件c:/Leadsec。注意:提示名字和姓氏时,应输入服务器的DNS域名或者IP地址,否则,客户端会弹出警告窗口。"站点不符"另外,因为是自签名的证书,客户端会弹出“非信任的机构颁发”,这时可以点击“继续”,或者安装该证书,确认自己的信任。

建立服务器证书2.配置Tomcat找到tomcat的server配置文件,位置是Tomcat 5.5/conf/server.xml。修改server.xml文件中增加类似这样的语句:<Connector

className="org.apache.coyote.tomcat5.CoyoteConnector"port= "8443" minProcessors="5"

maxProcessors="75"enableLookups="true" disableUploadTimeout="true"acceptCount="100" debug="0" scheme="https" secure="true"clientAuth="false"

sslProtocol="TLS" keystoreFile="C:/leadsec"

keystorePass="leadsec" /> 注意:

端口可以自行设置,但不能和已有的设置冲突。一般默认为8443。keystoreFile和keystorePass

必须与上一步建立的证书一致。 3.配置web.xml配置文件,位置是Tomcat 5.5/conf/web.xml 在</welcome-file-list> 添加如下配置信息<security-constraint>

<web-resource-collection>

<web-resource-name >SSL</web-resource-name>

<url-pattern>/user/login.do</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-gua rantee>

</user-data-constraint></security-constraint> struts.xml配置及代码设置 1. 在struts.xml中设置:

<constant name="struts2.sslplugin.httpPort"

value="8080"/> <constant

name="struts2.sslplugin.httpsPort"

value="8443"/><constant

name="struts2.sslplugin.annotations" value="true"/>

<package name="default" namespace="/"

extends="ssl-default,json-default">(注:不要添加ssl自带的拦截器,否则无法获取request的信息(cookie,参数))…..

2. 之后在你要某个SSL的方法前,用注释,就行了:@Secured public String login() throws Exception { return SUCCESS;}如果要整个类都要SSL,则@Securedpublic class UserAction extends ActionSupport implements ServletRequestAware, ServletResponseAware { 2.从Https 跳转到Http 此处使用重定向进行跳转,具体配置如下在类中添加属性//重定向urlprivate String redirectUrl;//Tomcat配置的http端口号private static final String HTTP_PORT="http.port";然后再对应的方法末尾添

加如下代码

redirectUrl="http://"+request.getServerName()+":"+ConfigUtils. getValue(HTTP_PORT)+request.getContextPath()+"/common/b

izNav.do";其中HTTP_PORT在环境文件中配置

http.port=8080,此端口号为tomcat中http的端口号(tomcat/conf/server.xml) xml文件配置由于使用重定向进行跳转,所以使用外部注入的方式,在action配置文件中配置如下<action name="userLogin"

class="UserAction" method="userLoginForStruts">

<result name="success" type="redirect">${redirectUrl} </result> </action>人有两条路要走,一条是必须走的,一条是想走的,你必须把必须走的路走漂亮,才可以走想走的路。

相关主题
相关文档
最新文档