初识框架之struts2(三。登录页面(初级)+拦截器)
来源:互联网 发布:金知元 知乎 编辑:程序博客网 时间:2024/05/17 16:16
一要求
模拟一个用户的登录功能
登录页面: 校验账号密码
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;}@Overridepublic User getModel() {// TODO Auto-generated method stubreturn 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;@Overrideprotected 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>
阅读全文
0 0
- 初识框架之struts2(三。登录页面(初级)+拦截器)
- struts2框架(三)——拦截器
- Struts2学习(九)—拦截器之登录权限
- Struts2自定义拦截器(实现没有登录情况下只能访问登录页面)
- 初识框架之struts2(一)
- 初识框架之struts2(二)
- Struts2框架之拦截器
- struts2 之配置拦截器使网站页面在session失效后退回到登录页面
- struts2--拦截器(非登录用户不可跳转至该页面)
- 基于SSH2框架Struts2拦截器的登录验证实现 (转)
- 【学习笔记】struts2框架自定义拦截器(检查用户登录为例)
- struts2框架---------拦截器(Interceptor)
- SSH:Struts2框架(拦截器)
- 框架(一)struts2--拦截器
- struts2学习(三)--拦截器
- JavaEE笔记(三)Struts2 拦截器
- struts2登录拦截(拦截Action,拦截url)
- J2EE系列之Struts2学习笔记(十三)--自定义拦截器示例之登录功能实现
- Spring Boot结合spring-data-jpa
- BS与CS的联系与区别
- LeetCode No.23 Merge k Sorted Lists
- hdu4289 最大流最小割
- HDU1698:Just a Hook(线段树)
- 初识框架之struts2(三。登录页面(初级)+拦截器)
- 1067. 试密码
- 数据库
- Java读取word模板并在模板相关位置插入数据和表格
- FilenameFilter介绍
- 集合模拟斗地主
- Android出现In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing错误信息
- lintcode刷题——两个链表的交叉
- 第十七天总结