初识框架之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
原创粉丝点击