Struts2简单例子

1.首先准备Struts2的必备jar包

2.Struts2拦截用户请求

在web.xml文件中配置Struts2的核心控制器,用来拦截客户端的请求,并将请求转发到相应的Action类中来处理,web.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>struts2Demo</display-name>

<!--   Struts2核心控制器 -->
  <filter>
          <filter-name>struts2</filter-name>
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

3.创建视图页面login.jsp及index.jsp

login.jsp可以使用Struts2标签库实现一个表单,登陆成功进入index.jsp界面,登陆失败返回login.jsp界面

login.jsp界面代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2
 3 <!-- 引入Struts2标签库   -->
 4 <%@ taglib prefix="s" uri="/struts-tags" %>
 5
 6 <!DOCTYPE html>
 7 <html>
 8 <head>
 9 <meta charset="UTF-8" />
10
11 <style type="text/css">*{font-size:12px;}</style>
12
13 <title>    登陆页面 </title>
14 </head>
15
16 <body>
17        <div style="margin:0 auto;">
18            <div style="font-size:14px;font-weight:bold;">用户登陆</div>
19            <div>
20                <s:form action="checkLogin" namespace="/login">
21                    <s:textfield name="username" style="font-size:12px;width:120px;" label="登陆名称" />
22                    <s:password name="password" style="font-size:12px;width:120px;" label="登陆密码" />
23                    <s:submit value="登陆" />
24                </s:form>
25            </div>
26        </div>
27 </body>
28 </html>

index.jsp界面代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8" />
 7 <title> 主页 </title>
 8 </head>
 9
10 <body>
11     <h1>登陆成功,欢迎您!</h1>
12 </body>
13 </html>

4.创建业务控制器LoginAction

LoginAction类作为逻辑控制器组件,定义checkLogin方法处理登陆验证逻辑,代码如下:

 1 package action;
 2
 3 import com.opensymphony.xwork2.ActionSupport;
 4
 5 /**
 6  * @author Sere
 7  * @date:2015年7月18日 上午9:04:18
 8  * 类说明
 9  */
10 public class LoginAction extends ActionSupport{
11
12     private static final long serialVersionUID = 7922979648150320921L;
13
14     private String username;
15     private String password;
16
17     /**
18      * 处理客户端请求的method,对应struts.xml文件
19      * @author  Sere
20      * @date:2015年7月18日 上午9:06:22
21      * */
22     public String checkLogin(){
23         if(this.username.endsWith("sere")&&this.password.equals("123")){
24             return SUCCESS;    //登陆成功返回SUCCESS
25         }else{
26             return LOGIN;    //登陆失败返回LOGIN
27         }
28     }
29
30
31     public String getUsername() {
32         return username;
33     }
34     public void setUsername(String username) {
35         this.username = username;
36     }
37     public String getPassword() {
38         return password;
39     }
40     public void setPassword(String password) {
41         this.password = password;
42     }
43 }

5.配置LoginAction

当Action处理完请求后返回一个字符串,每个字符串对应一个视图。在Struts.xml文件中配置Action时,name定义该Action的名称,class定义这个Action实际实现类,method表示这个Action中的实际实现方法。

在Struts.xml文件中,每个Action文件都指定了result元素,每个result元素都定义了一个逻辑视图,其中的name属性定义了Action所返回的字符串。

Struts.xml文件代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <include file="struts-default.xml" />
    <package name="struts2_login" extends="struts-default" namespace="/login">
        <action name="checkLogin" class="action.LoginAction" method="checkLogin">
            <result name="success">/index.jsp</result>
            <result name="login">/login.jsp</result>
        </action>
    </package>
</struts>

6.部署

struts.xml文件放在WEB-INF\classes目录下,jsp放在Webroot下,结构如下:

最后,部署到Tomcat服务器上打开login.jsp页面,用户名成功跳转index.jsp,失败跳转login.jsp

   

时间: 2024-08-28 12:32:59

Struts2简单例子的相关文章

从一个简单例子来理解js引用类型指针的工作方式

? 1 2 3 4 5 6 7 <script> var a = {n:1};  var b = a;   a.x = a = {n:2};  console.log(a.x);// --> undefined  console.log(b.x);// --> [object Object]  </script> 上面的例子看似简单,但结果并不好了解,很容易把人们给想绕了--"a.x不是指向对象a了么?为啥log(a.x)是undefined?".&

Hadoop RPC简单例子

jdk中已经提供了一个RPC框架-RMI,但是该PRC框架过于重量级并且可控之处比较少,所以Hadoop RPC实现了自定义的PRC框架. 同其他RPC框架一样,Hadoop RPC分为四个部分: (1)序列化层:Clent与Server端通信传递的信息采用了Hadoop里提供的序列化类或自定义的Writable类型: (2)函数调用层:Hadoop RPC通过动态代理以及java反射实现函数调用: (3)网络传输层:Hadoop RPC采用了基于TCP/IP的socket机制: (4)服务器端

extern外部方法使用C#简单例子

外部方法使用C#简单例子 1.增加引用using System.Runtime.InteropServices; 2.声明和实现的连接[DllImport("kernel32", SetLastError = true)] 3.声明外部方法public static extern int GetCurrentDirectory(int a, StringBuilder b); 4.对外部方法操作  GetCurrentDirectory(300, pathstring); using

事件简单例子

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Runtime.InteropServices; 6 7 namespace EventTest 8 { 9 /// <summary> 10 /// 事件订阅者类 11 /// </summary> 12 class Program 13 { 14 static v

spring mvc(注解)上传文件的简单例子

spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationContext.xml中 <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/> 关于文件上传的配置不能少 大家可以看具体代码如下: web.xml &

自定义隐式转换和显式转换c#简单例子

自定义隐式转换和显式转换c#简单例子 (出自朱朱家园http://blog.csdn.net/zhgl7688) 例子:对用户user中,用户名first name和last name进行转换成合成一个限定长度为10个字符新name. 自定义隐式转换: namespace transduction { public partial class transductionForm : Form { public transductionForm() { InitializeComponent();

使用fastjson转换json的简单例子

pom添加依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> 代码: package JsonTest.JsonTest; import java.util.ArrayList; import java.util.Hash

最简单例子图解JVM内存分配和回收

一.简介 JVM采用分代垃圾回收.在JVM的内存空间中把堆空间分为年老代和年轻代.将大量(据说是90%以上)创建了没多久就会消亡的对象存储在年轻代,而年老代中存放生命周期长久的实例对象.年轻代中又被分为Eden区(圣经中的伊甸园).和两个Survivor区.新的对象分配是首先放在Eden区,Survivor区作为Eden区和Old区的缓冲,在Survivor区的对象经历若干次收集仍然存活的,就会被转移到年老区. 简单讲,就是生命期短的对象放在一起,将少数生命期长的对象放在一起,分别采用不同的回收

BIP_Case_以RDF为数据源以RTF为模板的简单例子

一. 汇总    1. 建立rdf报表    2. 开发rtf模板    3. 建立可执行程式    4. 建立并发程式    5. 注册data defination    6. 注册template    7. 运行程式    8. 开发程式中间,需将输出模式修改为xml,产生xml文件,以做rtf开发准备原始数据 二.分步解析1. 建立rdf报表2. 开发rtf模板3. 建立可执行程式4. 建立并发程式5. 注册data defination6. 注册template7. 运行程式8. 开