纳税服务系统五(登陆与系统拦截)【配置系统、子系统首页、登陆与拦截】(上)

简介: 到目前位置,我们的用户模块和角色模块基本已经做好了,我们的纳税服务系统是放在一个大系统里边的。我们应该把我们已经写好的模块加载进去。本文主要的知识点:配置系统首页登陆模块权限拦截模块

前言


到目前位置,我们的用户模块和角色模块基本已经做好了,我们的纳税服务系统是放在一个大系统里边的。我们应该把我们已经写好的模块加载进去

本文主要的知识点:

  • 配置系统首页
  • 登陆模块
  • 权限拦截模块


加载整个系统首页


导入对应的JSP页面:


0.png

这里写图片描述


创建home模块的包,对应的Action和struts配置文件

1.jpg这里写图片描述


效果图:

2.jpg这里写图片描述




把纳税服务系统加到总系统上

当我点击纳税服务的时候,会出现纳税服务子系统的页面

网络异常,图片无法展示
|
这里写图片描述


绑定相关的超链接,跳转到对应的Action中


<li><a href="${ctx }/nsfw/home_frame.action">纳税服务</a> </li>

导入对应的JSP页面:

4.png

这里写图片描述


创建对应的模块包和配置文件:

5.png这里写图片描述


public class HomeAction {
    public String frame() {
        return "frame";
    }
    public String left() {
        return "left";
    }
    public String top() {
        return "top";
    }
}


配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="nsfw-home" namespace="/nsfw" extends="struts-default">
        <action name="nsfw_*" class="zhongfucheng.nsfw.HomeAction" method="{1}">
            <result name="{1}">/WEB-INF/jsp/nsfw/{1}.jsp</result>
        </action>
    </package>
</struts>
  • 效果:

6.jpg

这里写图片描述



子功能添加到纳税服务系统中

就是让左边的导航栏跳转到我们的对应显示页面就行了


<dl class="">
        <dt><a class="yh" href="${basePath}role/role_listUI.action" target="mainFrame"><b></b>角色管理<s class="down"></s>
        </a></dt>
    </dl>
    <dl class="">
        <dt><a class="yh" href="${basePath}user/user_listUI.action" target="mainFrame"><b></b>用户管理<s class="down"></s>
        </a></dt>
    </dl>



到目前为止,我们已经写了用户模块和角色模块了。也已经把系统的首页和子系统的首页配置好了。我们的系统是需要登陆后才能访问的

7.jpg

这里写图片描述

因此,接下来主要讲解登陆模块、权限拦截


登陆模块


编写Action与配置文件


引入对应的JSP页面


8.jpg这里写图片描述

编写Action处理请求和对应的配置文件:

9.jpg这里写图片描述

效果:

10.jpg

这里写图片描述

Action处理

在常量类中保存着一个Session的标识:


/***********保存Session域的常量***********/
    public static String USER = "SYS_USER";


Action


package zhongfucheng.login;
import com.opensymphony.xwork2.ActionContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import zhongfucheng.core.action.BaseAction;
import zhongfucheng.core.constant.Constant;
import zhongfucheng.user.entity.User;
import zhongfucheng.user.service.UserService;
import java.util.List;
/**
 * Created by ozc on 2017/6/2.
 */
public class LoginAction extends BaseAction {
    /***************封装数据**********************/
    private User user;
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    /****************调用userService****************************/
    @Autowired
    private UserService userServiceImpl;
    public String loginUI() {
        return "loginUI";
    }
    /****************记载着登陆状态信息*********************/
    private String loginResult;
    public String getLoginResult() {
        return loginResult;
    }
    public void setLoginResult(String loginResult) {
        this.loginResult = loginResult;
    }
    /*****************业务方法******************/
    public String login() {
        if (user != null) {
            List<User> list = userServiceImpl.findUserByAccountAndPassword(user.getAccount(), user.getPassword());
            //如果查到有值,那么就证明有该用户的,给他登陆
            if (list != null && list.size() > 0) {
                //保存到Session域中,为了更方便用,我们使用常量保存。
                ActionContext.getContext().getSession().put(Constant.USER, list.get(0));
                //保存到日志文件中Log
                Log log = LogFactory.getLog(getClass());
                log.info("用户名称为" + list.get(0).getName() + "登陆了系统!");
                //重定向到首页
                return "home";
            } else {
                //登陆失败,记载登陆信息
                loginResult = "登陆失败了,用户名或密码错误了";
            }
        }
        //只要不成功的,都回到登陆页面
        return loginUI();
    }
}


在dao层中实现根据账户和密码查询数据:


@Override
    public List<User> findUserByAccountAndPassword(String account, String password) {
        //通过账户和密码查找对象
        String sql = "FROM User WHERE account=? AND password=?";
        return getSession().createQuery(sql).setParameter(0, account).setParameter(1,password).list();
    }


我们还在Action中定义了一个String来记载着Login的状态,如果出错了。我们就返回loginUI界面,然后在那里回显Login出错的信息。

同时登录完在系统主页上回显数据:


<a><b></b><font color="red">欢迎您,<s:property value="%{#session.SYS_USER.account}"/> &nbsp;</font></a>

网络异常,图片无法展示
|

这里写图片描述



注销功能

在主页上的退出上绑定超链接


<td align="left" valign="middle" ><a href="${ctx}/sys/login_logout.action">退出</a></td>


Action处理:


public String logout() {
        //销毁session的值
        ActionContext.getContext().getSession().remove(Constant.USER);
        return loginUI();
    }
目录
相关文章
|
6月前
|
NoSQL Redis 微服务
用户登陆业务介绍
用户登陆业务介绍
33 0
|
6月前
|
缓存 前端开发 Go
从4开始,在后端系统中增加用户注册和登录功能
从4开始,在后端系统中增加用户注册和登录功能
40 0
|
存储 前端开发 PHP
构建一个简单的网站,包括用户注册、登录功能
构建一个简单的网站,包括用户注册、登录功能
287 1
|
5月前
|
开发工具 git
大世界项目14-权限拦截控制_未登录无法看到正常页面
大世界项目14-权限拦截控制_未登录无法看到正常页面
JavaWeb用户信息管理系统-用户只能在一处登录
JavaWeb用户信息管理系统-用户只能在一处登录
47 0
|
6月前
|
监控 JavaScript 应用服务中间件
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
109 0
|
前端开发 Java 测试技术
基于Springboot外卖系统05:用户非登陆状态的页面拦截器实现
用户访问接口验证,如果用户没有登录,则不让他访问除登录外的任何接口。
120 0
|
存储 JSON 前端开发
基于Springboot外卖系统04:后台系统用户登录+登出功能
如果前端与后台接口之间不存在跨域问题,那么推荐使用cookie和session来记录登录状态。如果前端与服务器接口之间存在跨域问题,那么就要使用token的方式来维持登录状态。
239 0
|
前端开发 开发者 微服务
后台系统登录改造和跨域 | 学习笔记
快速学习后台系统登录改造和跨域
后台系统登录改造和跨域 | 学习笔记
|
小程序 API 数据库
小程序中实现用户的登录与注册
小程序中实现用户的登录与注册
小程序中实现用户的登录与注册