初识框架之struts2(三。登录页面(初级)+拦截器)
2017-08-16 20:46
513 查看
一要求
模拟一个用户的登录功能登录页面: 校验账号密码
Form使用struts的
点击登录---login里面
获取参数并且判断账号密码是否匹配
如果匹配--到查询action里 ,通过查询的action跳到查询页面
如果没有登录直接进查询的action返回登录页面
二实现
1.配置Struts基本构成(详情看 --初识框架之struts2(一))
2.jsp页面
------login.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> function checkForm(){ //制定正则表达式 获取表单数据 //账号 第一位是字母 由6-18位数字 字母 和 _组成 \w表示字母数字下划线 var regUsername=/^[a-zA-Z]{1}\w{5,15}$/; var regPassword=/^[a-zA-Z]\w{5,17}$/; //获取表单的数据 的值 document.getElementById("id").vaule; var username=document.getElementById("username").value; var password=document.getElementById("password").value; //校验 if(!regUsername.test(username)){ document.getElementById("s1").innerHTML="<font color=red>请输入 第一位为 字母 由6-18位数字 字母 和 _组成 "; return false; }else{ document.getElementById("s1").innerHTML="√"; } if(!regPassword.test(password)){ document.getElementById("s2").innerHTML="<font color=red>请输入 第一位为 字母 由6-18位数字 字母 和 _组成 "; return false; }else{ document.getElementById("s2").innerHTML="√"; } } </script> </head> <body> <h1>欢迎来到注册页面</h1> <s:form action="login" method="post" onsubmit="return checkForm()" theme="simple"> 账号:<s:textfield name="username" id="username"></s:textfield><span id="s1"></span><br> 密码:<s:password name="password" id="password"></s:password><span id="s2"></span><br> <s:submit></s:submit> </s:form> </body>
3.action方法
包括登录和查询方法package com.zy.action; import javax.security.auth.message.callback.PrivateKeyCallback.Request; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.zy.model.User; public class UserAction extends ActionSupport implements ModelDriven<User>{ /** * */ private static final long serialVersionUID = 1L; private User user= new User(); public String login(){ System.out.println("登录了"); //如果账号=xx 密码=xx登录成功 if("a123456".equals(user.getUsername())&&"a123456".equals(user.getPassword())){ //绑定参数, 目的是传参到拦截器里 ,然后拦截直接在页面不登录就不嫩查询 ServletActionContext.getRequest().getSession().setAttribute("loginFlag", "loginSuccess"); return SUCCESS; } return INPUT; } public String select(){ System.out.println("查询"+user); return SUCCESS; } @Override public User getModel() { // TODO Auto-generated method stub return user; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
4。拦截器(获取参数并且判断)
a.放行
b.如果直接在浏览器直接输入页面 则返回登录页面
package com.zy.inter; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public class MyMethodsInter extends MethodFilterInterceptor{ /** * */ private static final long serialVersionUID = 1L; @Override protected String doIntercept(ActionInvocation arg0) throws Exception { //获取参数 并且接受 String flag = (String) ServletActionContext.getRequest().getSession().getAttribute("loginFlag"); if("loginSuccess".equals(flag)){ // 放行 arg0.invoke(); }else{ return "login"; } return null; } }
5. struts.xml
a.自定义拦截器配置
b.action方法result 视图
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <package name="my" extends="struts-default" abstract="true"> <interceptors> <interceptor name="myInter" class="com.zy.inter.MyMethodsInter"></interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="myInter" > <param name="excludeMethods">login</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 使用拦截器栈 --> <default-interceptor-ref name="myStack"></default-interceptor-ref> </package> <!-- 整理归类(类) --> <package name="user" extends="my"> <!-- 动作1(方法1) --> <action name="login" class="com.zy.action.UserAction" method="login"> <!-- result视图 --> <!-- type="chain" action到action需要请求转发 --> <result type="chain">select</result> <result name="input">/login.jsp</result> </action> <action name="select" class="com.zy.action.UserAction" method="select"> <!-- result视图 --> <result >/success.jsp</result> <result name="input">/login.jsp</result> <result name="login">/login.jsp</result> </action> </package> </struts>
9417
相关文章推荐
- struts2用户是否登录拦截器,拦截之后异步跳转到登录页面
- Struts2自定义拦截器(实现没有登录情况下只能访问登录页面)
- Struts2通过自己定义拦截器实现登录之后跳转到原页面
- struts2拦截器实现session超时返回登录页面(iframe下跳转到其父页面)
- 初识 Struts2 - 先来生成一个登录页面体验一下
- struts2 之配置拦截器使网站页面在session失效后退回到登录页面
- Struts2透过自定义拦截器实现登录之后跳转到原页面
- Struts2自定义拦截器实例—只允许从登录页面进入系统
- Struts2自定义拦截器实例—只允许从登录页面进入系统
- Struts2通过自定义拦截器实现登录之后跳转到原页面
- struts2拦截器起作用了,但是返回的登录页面在右侧的mainframe中打开了
- struts2--拦截器(非登录用户不可跳转至该页面)
- Struts2自定义拦截器实例—登陆权限验证+验证框架
- 学习struts2建bbs总结三:登录拦截器
- 学习淘淘商城第一百零三课(利用拦截器实现登录功能及订单确认页面展示)
- 在Struts2中实现登陆后跳转到登录前页面
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- Struts2拦截器登录验证
- struts2拦截器--拦截未登录用户
- 分享一个用struts2写的注册登录的页面