zoukankan      html  css  js  c++  java
  • [原创]java WEB学习笔记56:Struts2学习之路---Struts 版本的 登录 demo

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

    内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

    本人互联网技术爱好者,互联网技术发烧友

    微博:伊直都在0221

    QQ:951226918

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    1.Demo

      

    修改 扩展名:org.apache.struts2 包下的default.properties 中配置了Struts2 应用的常量

      struts.action.extension :指明当前Struts2 应用可以接受的请求的扩展名。可以在Struts.xml 文件中以常量配置的方式修改 default.properties 所配置的常量。在package 标签之前

    1 <!-- 配置Struts 可以受理的请求的扩展名 -->
    2     
    3     <constant name="struts.action.extension" value="action,do,"></constant>

    1.代码结构

    index.jsp

    <%@page import="java.util.Date"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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>testAction index page</title>
    </head>
    <body>
    >
        <a href="login-ui.do">LogIn</a>
        
    
        
    </body>
    </html>

    /login/login-success.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 
    11     <h1>Login Success</h1>
    12     <br><br>
    13     Welcome: ${sessionScope.userName }
    14     
    15     <br><br>
    16     Count On Line: ${applicationScope.count }
    17     <br><br>
    18     
    19     <a href="logout.do">logout</a>
    20     
    21 
    22 </body>
    23 </html>

    /login/login.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 
    11     <form action="user-login.do" method="post">
    12         
    13         username:<input type="text" name="userName"/>
    14         <input type="submit" value="login"/>
    15         
    16     </form>
    17 
    18 </body>
    19 </html>

    struts.xml

    <?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>
    
    
        <!-- 配置Struts 可以受理的请求的扩展名 -->
        
        <constant name="struts.action.extension" value="action,do,"></constant>
    
     <package name="testAction" namespace="/" extends="struts-default">
    
        <!-- demo aciton -->
            
            <action name="login-ui" >
                <result >/login/login.jsp</result>
            </action>
            
            <action name="user-login" class="com.jason.struts.logindemo.UserAction">
                <result name="login-success">/login/login-success.jsp</result>
            </action>
            
            <action name="logout" class="com.jason.struts.logindemo.UserAction" method="logout">
                <result name="logout-success">/login/login.jsp</result>
            </action>
        </package>
        
         
    </struts>

    UserAction.java

    用session 保存的 userName 的值,必须与表单提交过过来的  value="userName" 一致,而赋值,是由Struts 的注入方式赋值,所以提供一个变量的 setter方法用于注入赋值

     1 package com.jason.struts.logindemo;
     2 
     3 import java.util.Map;
     4 
     5 import org.apache.struts2.dispatcher.SessionMap;
     6 import org.apache.struts2.interceptor.ApplicationAware;
     7 import org.apache.struts2.interceptor.SessionAware;
     8 
     9 public class UserAction implements SessionAware ,ApplicationAware {
    10     private Map<String, Object> session;
    11     private Map<String, Object> application;
    12     private String userName;
    13     
    14     @Override
    15     public void setSession(Map<String, Object> session) {
    16         this.session = session;
    17         
    18     }
    19     @Override
    20     public void setApplication(Map<String, Object> application) {
    21         this.application = application;
    22         
    23     }
    24     
    25     public void setUserName(String userName) {
    26         this.userName = userName;
    27     }
    28     
    29     public String execute(){
    30         
    31         //把用户的信息保存在Session 中
    32         //1.获取Ssession,实现
    33         
    34         //2.获取登录信息:通过在Action 中添加setter 方法
    35         
    36         //3.把用户信息保存在session中
    37         session.put("userName", userName);    
    38         //在线人数 +1
    39             //获取当前的在线人数,从application中获取
    40             Integer count = (Integer) application.get("count");
    41             if(count == null){
    42                 count = 0;
    43             }
    44             //使当前人数+1
    45             count ++;
    46             application.put("count", count);
    47         
    48         return "login-success";
    49     }
    50     
    51     public String logout(){
    52         
    53         //1.在线人数 -1 :获取在线人数,若数量> 1 ,则 -1
    54             Integer count = (Integer) application.get("count");
    55             if(count != null && count > 0){
    56                 count --;
    57                 application.put("count", count);
    58             }
    59         //2.session 失效:强转为 SessionMap, 调用 invalidate 方法
    60             ((SessionMap)session).invalidate();
    61         return "logout-success";
    62     }
    63 
    64     
    65 
    66     
    67 
    68 }

    2.重点理解 流程: 深刻理解 Struts.xml 中的 aciton 各个参数 

    <action name="user-login" class="com.jason.struts.logindemo.UserAction">
                <result name="login-success">/login/login-success.jsp</result>
            </action>

      1)请求:请求的url,请求的方式

      2)处理:在哪里处理?处理的逻辑?处理的返回如何对应?

      3)返回:返回到哪里

  • 相关阅读:
    2015多校.Zero Escape (dp减枝 && 滚动数组)
    UVa-11809
    UVa-1588 Kickdown
    UVa-1587
    UVa-10340
    UVa-202
    UVa-1368
    UVa-232 Crossword Answers
    UVa-227
    UVa-455 Periodic Strings
  • 原文地址:https://www.cnblogs.com/jasonHome/p/5784973.html
Copyright © 2011-2022 走看看