框架的东西太复杂也难以讲通,直接上代码:

一、首先得配置环境 和导入必要的jar包

有一些重要的如下:

Filter文件夹下的SafetyFilter.java

model文件夹下的 GlobalNames.java

web文件下的MySpringContext.java    baseAction.java   BusinessException.java

interceptor文件夹下的 AuthorizationInterceptor.java    ExceptionIntercetor.java   RequestParameter.java  HttpUtil.java  PropertiesUtil.java

以及src根目录文件下的以下文件

java 用户登陆信息放在浏览器什么地方 清不掉_java

。。。

此外,webContent文件夹下的WEB-INF 里面的web.xml里面要部署拦截器和过滤器

首选写一个登录后进入的欢迎页面,首先是Home.jsp 然后是index.html

工程名字

Home.jsp
index.html
index.jsp
default.html
default.htm
default.jsp
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
SafetyFilter
******.filter.SafetyFilter
不作判断的资源
excludeUrls
/login.action,
/pages/login.jsp
SafetyFilter
*.jsp
*.action

除此外,还有自己要写的action,bpo,dto,mapper,common文件夹

二、先写一个登录页面login.jsp

pageEncoding="UTF-8"%>

登录页面

                        



1234



登陆

var baseCtx = '${pageContext.request.contextPath}/';
if("ontouchend" in document) document.write("
$(function() {
$("#LoginName").focus();
});
function checkUser() {
var result = $.trim($("#LoginName").val());
var password = $.trim($("#PassWord").val());
if (result == "" || result == null) {
alert("用户名不能为空!");
return false;
}
if (password == "" || password == null) {
alert("请输入密码!");
return false;
}
$("#loginForm").submit();
}
//初始化登录输入
function initLoginForm(){
var usr = document.getElementById("LoginName").value;
var pwd = document.getElementById("PassWord").value;
if( usr && pwd){
$("#LoginName").val(""); 
$("#PassWord").val("");
}
}

三、写一个登陆成功后返回的页面 Home.jsp

页面内容这里不关注 关注的是登陆成功后返回的用户信息

var contextPath = "${pageContext.request.contextPath}";

var Role = '${sessionScope.sys_current_sessioninfo.Role}';

var Name = '${sessionScope.sys_current_sessioninfo.Name}';

var Id = '${sessionScope.sys_current_sessioninfo.Id}';

四、写一个登陆的action请求Java文件

从这里需要先说明一下后续的各个文件的用途

loginAction.java:登录请求,接收到用户页面上输入的用户名和密码(loginName  passWord)

LoginUserDTO.java:登陆的客户端用户对象,他也有两个属性loginName  passWord

Sysuser.java:登陆的服务端用户对象,由数据库匹配成功后返回的用户对象;他也有多个属性 ID, name,  role, password, phone, age等

sessionInfo.java:登陆成功后保存的用户信息,在客户端用户访问期间一直有效,保存的属性也有多个ID, name,  role, password, phone, age等

userSession.java:主要是session的创建方法和获取session的方法

/**
* 取当前操作人员ID号
* @return
*/
public static String getCurrentUserid() {
SessionInfo sessionInfo = (SessionInfo) get(GlobalNames.CURRENT_SESSION_INFO);
if (sessionInfo != null)
return sessionInfo.getWpyId();
return null;
}
/**
* 取当前登录Session
*/
public static Map getSession() {
Map map = (Map) session.get();
return map;
}
userMapper.java:内容:public Sysuser selectByLoginName(String loginName);
//返回类型为Sysuser
//方法名:selectByLoginName
//功能:根据用户输入的登录名来查找是否存在该用户
usermapper.xml:主要是根据登陆时候提供的用户名进行数据库查询,并返回一个用户对象
ID,
name,
age,
phone,
role,
password
SELECT
FROM table_name WHERE name=#{loginName}
loginAction.java的主要内容为:
private LoginUserDTO loginUser;
private String loginName;//前台页面的登录用户名
private String passWord;//前台页面的登录密码
@Resource
LogonBPO logonBPO;
//
@Action(value = "/login", results = {
@Result(location = "hi",type="redirectAction"),
@Result(name = "login", location = "/pages/login.jsp") })
public String login(){
Map argsMap = new HashMap();
if (loginUser == null){
loginUser = new LoginUserDTO();
}
try {
System.out.println("用户和密码验证开始!");
Sysuser sysuser = logonBPO.checkUser(loginUser.getLoginName(), loginUser.getPassWord());
System.out.println("用户为:\n"+sysuser.getWpy_name());
//将服务端返回的用户对象数据存入一个map(10个字段的数据)
argsMap.put("Id", sysuser.getId());
argsMap.put("name", sysuser.getName());
System.out.println("开始创建session:\n");
//将map数据存入用户session
logonBPO.createSessionInfo(argsMap);
}
catch (BusinessException e) {
addActionError(e.getMessage());
return LOGIN;
}
return SUCCESS;
}
/**
*
* 登陆成功后返回的页面是Home.jsp
* @return
*/
@Action(value = "/hi",results = { @Result(location = "/pages/Home.jsp") } )
public String loginDispatch() {
return SUCCESS;
}
/**
* 退出系统
*/
@Action(value="/logout", results = { @Result(location = "/pages/login.jsp") })
public String logout() {
SessionInfo sessionInfo = (SessionInfo) UserSession.get(GlobalNames.CURRENT_SESSION_INFO);
this.request.getSession().invalidate();
if (sessionInfo != null) {
sessionInfo.getId();
} else
{
logger.warn("logoff");
}
if (HttpUtil.isAjaxRequest(this.request)) {
return NONE;
} else {
return SUCCESS;
}
//return NONE;
}

LogonBPO.java 主要用于检查用户密码是否正确以及用户名是否存在,代码如下:

public Sysuser checkUser(String loginName, String passWord) {
//根据登陆的用户名和密码进行验证
//1.查询后台数据 返回类型为sysuser
Sysuser user = userMapper.selectByLoginName(loginName);
//2、判断用户状态
if (user == null) {
System.out.println("用户不存在:\n");
throw new BusinessException("该用户不存在!");
}
else
{
//3.判断密码
if (passWord == null) {
throw new BusinessException("密码为空!");
}
else
{
//4、验证密码是否正确
if (!passWord.equals(user.getPassword())){
throw new BusinessException("密码错误!");
}
else
{
System.out.println("密码匹配成功!\n");
}
}
}
return user; //返回用户
}
/**
* 建立用户会话信息,将action请求得到的用户信息保存在session中
*/
public void createSessionInfo(Map argsMap) {
Map session = UserSession.getSession();
SessionInfo sessionInfo= new SessionInfo();
sessionInfo.setId(argsMap.get("Id"));
sessionInfo.setName(argsMap.get("name"));
//将session数据存入一个全局变量
session.put(GlobalNames.CURRENT_SESSION_INFO, sessionInfo);
}
}