当前位置: 代码网 > it编程>编程语言>Java > springboot如何通过controller层实现页面切换

springboot如何通过controller层实现页面切换

2024年12月14日 Java 我要评论
springboot通过controller层实现页面切换背景通过springboot完成一个web项目时,想像springmvc一样通过controller层实现页面切换。实现方式//return

springboot通过controller层实现页面切换

背景

通过springboot完成一个web项目时,想像springmvc一样通过controller层实现页面切换。

实现方式

//return "dashboard";//这是由模板引擎解析,然后拼串
//return "forward:/dashboard.html";//这是转发
return "redirect:/main.html";//这是重定向

最终浏览器返回的只是字符串本身:redirect:/main.html。而无法实现页面切换。

各种百度,无法解决。最后才发现是因为springboot注解的原因。

springboot控制层默认注解是:@restcontroller ,而@restcontroller是@controller 和 @responsebody的合体。

@responsebody会将返回值转换为字符串返回,所以得到的结果只能是字符串。

将@restcontroller 换成@controller 后,就实现了页面的切换。

package com.zr.gktjweb.controller.login;
 
import com.zr.gktjweb.common.httpclientutil;
import com.zr.gktjweb.common.responsebean;
import com.zr.gktjweb.constant.syscode;
import com.zr.gktjweb.model.sysuser;
import com.zr.gktjweb.util.jsonutils;
import com.zr.gktjweb.util.userutil;
import io.swagger.annotations.api;
import io.swagger.annotations.apiimplicitparam;
import io.swagger.annotations.apiimplicitparams;
import io.swagger.annotations.apioperation;
import net.sf.json.jsonobject;
import org.slf4j.logger;
import org.slf4j.loggerfactory;
import org.springframework.beans.factory.annotation.value;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.bind.annotation.responsebody;
 
import javax.servlet.http.httpservletrequest;
import java.util.hashmap;
import java.util.map;
 
@api(tags = "登录")
@controller
public class logincontroller {
    @value("${baseurl}")
    private string baseurl;
    @value("${login_url}")
    private string loginurl;
    @value("${logout_url}")
    private string logouturl;
    private static final logger logger = loggerfactory.getlogger(logincontroller.class);
 
    @apioperation(value = "登录", notes = "登录验证")
    @apiimplicitparams({@apiimplicitparam(name = "username", value = "姓名", required = true, datatype = "string"),
            @apiimplicitparam(name = "password", value = "密码", required = true, datatype = "string")
    })
    @requestmapping(value = "/login.do", method = requestmethod.post)
    @responsebody
    public responsebean login(string username, string password) {
        string url = baseurl + loginurl;
        map<string, string> map = new hashmap<>();
        map.put("username", username);
        map.put("password", password);
        string result = "";
        //请求服务失败
        try {
            result = httpclientutil.dopost(url, map);
        } catch (exception e) {
            e.printstacktrace();
            logger.error("用户登录", e);
            return new responsebean(syscode.errcode, "系统异常,请联系管理员", "");
        }
        jsonobject json = jsonobject.fromobject(result);
        //登录验证未通过
        if (!json.getstring("code").equals(syscode.successcode + "")) {
            responsebean responsebean = jsonutils.jsontoobject(responsebean.class, result);
            return responsebean;
        }
        //验证通过,在session中设置token
        jsonobject datajson = (jsonobject) json.get("data");
        string userjson = datajson.getstring("user");
        sysuser sysuser = jsonutils.jsontoobject(sysuser.class, userjson);
        jsonobject tokenjson = (jsonobject) datajson.get("token");
        string token = tokenjson.getstring("token");
        userutil.settoken(token);
        userutil.setusersession(sysuser);
//        session.setattribute("token", token);
//        session.setattribute("user", sysuser);
        string url1 = "/index.html";
        map<string, object> resmap = new hashmap<>();
        resmap.put("url", url1);
        return new responsebean(syscode.successcode, "登录成功", resmap);
    }
 
    /**
     * 注销登录
     *
     * @param request
     * @return
     */
    @requestmapping("/loginout.do")
    public string loginout(httpservletrequest request) {
        request.getsession().invalidate();
        string url=baseurl+logouturl;
        httpclientutil.doget(url);
        return "redirect:/";
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com