[原创]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)返回:返回到哪里

 

posted @ 2016-08-18 18:19  jason_zhangz  阅读(211)  评论(0编辑  收藏  举报