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]: CN
CN=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-guarantee>

        </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,则 
@Secured

public class UserAction extends ActionSupport implements ServletRequestAware,    ServletResponseAware {

 

2.从Https跳转到Http

         此处使用重定向进行跳转,具体配置如下

  1. 在类中添加属性

//重定向url

private String redirectUrl;

//Tomcat配置的http端口号

private static final String  HTTP_PORT="http.port";

然后再对应的方法末尾添加如下代码

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

其中HTTP_PORT在环境文件中配置http.port=8080,此端口号为tomcat中http的端口号(tomcat/conf/server.xml)

 

  1. xml文件配置

由于使用重定向进行跳转,所以使用外部注入的方式,在action配置文件中配置如下

            <action name="userLogin" class="UserAction" method="userLoginForStruts">

             <result name="success" type="redirect">${redirectUrl} </result>

     </action>

人有两条路要走, 一条是必须走的,一条是想走的,你必须把必须走的路走漂亮,才可以走想走的路。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值