struts2入门Demo示例

本文讲述了struts2入门Demo示例。分享给大家供大家参考。具体如下:

1.新建Web Project, 名称:struts2Demo;

2.建立一个用户库struts2, 包含最少的struts2的最少的6个jar文件;
其实呢, 对于MyEclipse8以上来说, 是不必须的, 因为它直接支持struts2了.不需要另外导包.

3.用Build Path将struts2的库加进来;

4.在web.xml中加入以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
  <!-- struts2的配置 -->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

5.建立Action

package com.yenange.action;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action {
  private String uname;  //表单中的姓名
  private String upass;  //表单中的密码
  //执行方法
  @Override
  public String execute() throws Exception {
    System.out.println("姓名:"+uname);
    System.out.println("密码:"+upass);
    if (uname.equals("leaf") && upass.equals("leaf")) {
      return "success";
    }
    return "error";
  }
  //记住, 要有get和set方法
  public String getUpass() {
    return upass;
  }
  public void setUpass(String upass) {
    this.upass = upass;
  }
  public String getUname() {
    return uname;
  }
  public void setUname(String uname) {
    this.uname = uname;
  }
}

6.三个页面文件:

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <body>
    <form action="login">
      用户名:<input type="text" name="uname"><br>
      密 码:<input type="text" name="upass"><br>
      <input type="submit" value="登陆" />
    </form>
  </body>
</html>

welcome.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
  <head>
    <title>My JSP 'welcome.jsp' starting page</title>
  </head>
  <body>
    welcome struts2
  </body>
</html>

fail.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
 <head>
  <title>My JSP 'welcome.jsp' starting page</title>
 </head>
 <body>
出错!
</body>
</html>

7.配置struts.xml. (对于MyEclipse6来说, 只能从别的地方copy)

<?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>
  <package name="default" namespace="/" extends="struts-default">
    <action name="login" class="com.yenange.action.LoginAction">
      <result name="success">/welcome.jsp</result>
      <result name="error">/fail.jsp</result>
    </action>
  </package>
  <!-- Add packages here -->
</struts>

8.到此完成.可以运行一下了, 是不是很简单?

下面是取得request, session, application这些东西的方法.

package com.yenange.action;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action,ServletRequestAware,SessionAware,ServletContextAware {
  private String uname;  //表单中的姓名
  private String upass;  //表单中的密码
  HttpServletRequest request;  //常用的request
  Map session;  //常用的session,有不同, 但是不需要管
  ServletContext application;    //常用的application
  //第二种取的方法;
  HttpServletRequest request2 = ServletActionContext.getRequest();
  HttpServletResponse response2 = ServletActionContext.getResponse();
  HttpSession session2 = request2.getSession();
  @Override
  public void setServletRequest(HttpServletRequest req) {
    this.request=req;
  }
  @Override
  public void setSession(Map session) {
    this.session=session;
  }
  @Override
  public void setServletContext(ServletContext application) {
    this.application=application;
  }
  //执行方法
  public String execute() throws Exception {
    if (uname.equals("leaf") && upass.equals("leaf")) {
      request.setAttribute("userName", uname);
      return "success";
    }
    request.setAttribute("accessError", uname+"这个用户或密码不正确!");
    return "error";
  }
  //记住, 要有get和set方法
  public String getUpass() {
    return upass;
  }
  public void setUpass(String upass) {
    this.upass = upass;
  }
  public String getUname() {
    return uname;
  }
  public void setUname(String uname) {
    this.uname = uname;
  }
}

这些只是初步了, 后面再学习一些关于标签, 动态方法之类的东西.

希望本文所述对大家的Struts程序设计有所帮助。

(0)

相关推荐

  • struts2框架入门

    如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架,Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说了. 我用自己做的一张图说明servlet和struts2的区别. 写一个最基本的开发步骤,完成开发.         (1)创建WEB 工程         (2)导入必要jar包         (3) 编写JSP 页面         (4)编写Action 服务器端处理逻辑         (5)进行框架配置we

  • Struts2学习笔记(1)-入门教程

    什么是Structs2?它就是在Struts1的基础上演化而来的,是一种MVC模式的框架,其实它的功能很简单,就是将View和逻辑处理层分开.本人才疏学浅,以前都是用Spring做项目,由于要毕业,所以需要进行转行(暂且这么说吧),公司都是用的Structs框架,木有办法,从头开始学吧! 所需软件-Eclipse.TomCat7.0.Struts-2.3.1.2(源码自己下载),下面以具体小项目来说明. 首先是Struts2的工作原理:首先Tomcat对用户所输入的URL进行解析,将其中的项目名

  • 详解在Java的Struts2框架中配置Action的方法

    在Struts2中Action部分,也就是Controller层采用了低侵入的方式.为什么这么说?这是因为在Struts2中action类并不需要继承任何的基类,或实现任何的接口,更没有与Servlet的API直接耦合.它通常更像一个普通的POJO(通常应该包含一个无参数的execute方法),而且可以在内容定义一系列的方法(无参方法),并可以通过配置的方式,把每一个方法都当作一个独立的action来使用,从而实现代码复用. 例如: package example; public class U

  • java Struts2框架下实现文件上传功能

    本文实例为大家分享了Struts2框架实现文件上传的方法,供大家参考,具体内容如下 struts2的配置过程 (1)在项目中加入jar包 (2)web.xml中filter(过滤器)的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:x

  • 概述Java的struts2框架

    一.struts2框架概念 Struts2框架是一个轻量级的MVC流程框架,轻量级是指程序的代码不是很多,运行时占用的资源不是很多,MVC流程框架就是说它是支持分层开发,控制数据的流程,从哪里来,到那里去,怎么来,怎么去的这样一个框架:Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. 二.struts2框架的优缺点 1.优点 a) 实现了MVC模式,层次结构清

  • java struts2框架简介

    一.Struts2简介  1.Struts2概述 Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. M:model-----数据封装------->javabean V:view------视图----------->jsp C:control------控制器--------> struts2( filter),struts1(servlet)  2.Struts2的来历 Struts1:也是apache开发的一套mvc的开源框架.在2005年之前非

  • Java的Struts2框架配合Ext JS处理JSON数据的使用示例

    最近尝试用extjs来展示树状菜单.着实花了一番功夫.树状菜单的菜单项需要动态加载,而目前版本的extjs中只支持JSON格式的数据.查了一些资 料,决定使用struts2的json-plugin.首先按照例子做了一个,但是结果就是不成功,界面上只出来了一个js中生成的root节点,不能加 载从后台生成的数据.研究后发现是数据格式有问题.使用json-plugin生成的数据格式如下: {"cls":"folder","id":10,"l

  • 详解Java的Struts2框架的结构及其数据转移方式

    Struts2的结构 1.为什么要使用框架? (1)框架自动完成了很多琐屑的任务 对于Struts2来说,它帮助我们方便地完成了数据类型转换.数据验证.国际化等等 Web开发中常见的任务.还有Spring中大量使用的Template模式,都是在让我们的开发 过程更加自动化.智能化.使用框架就是避免重新发明轮子,重新复制这些模板代码. 框架让我们将精力更多地放在更高级别的问题上,而不是常见工作流和基础任务上. (2)使用框架就是优雅地继承了框架背后的架构 框架背后的架构通常定义了一系列的工作流程,

  • Java的Struts2框架中拦截器使用的实例教程

    1.拦截器小介 拦截器的功能类似于web.xml文件中的Filter,能对用户的请求进行拦截,通过拦截用户的请求来实现对页面的控制.拦截器是在Struts-core-2.2.3.jar中进行配置的,原始的拦截器是在struts-default.xml中配置的,里面封存了拦截器的基本使用方法. Struts2拦截器功能类似于Servlet过滤器.在Action执行execute方法前,Struts2会首先执行struts.xml中引用的拦截器,如果有多个拦截器则会按照上下顺序依次执行,在执行完所有

  • struts2入门Demo示例

    本文讲述了struts2入门Demo示例.分享给大家供大家参考.具体如下: 1.新建Web Project, 名称:struts2Demo; 2.建立一个用户库struts2, 包含最少的struts2的最少的6个jar文件; 其实呢, 对于MyEclipse8以上来说, 是不必须的, 因为它直接支持struts2了.不需要另外导包. 3.用Build Path将struts2的库加进来; 4.在web.xml中加入以下配置: <?xml version="1.0" encodi

  • php扩展开发入门demo示例

    本文实例讲述了php扩展开发.分享给大家供大家参考,具体如下: 一.进入php源码包,找到ext文件夹 cd /owndata/software/php-5.4.13/ext 文件夹下放的都是php的相关扩展模块 二.生成自己的扩展文件夹和相关文件 php支持开发者开发自己的扩展,提供了ext_skel骨架,用来构建扩展基本文件 ./ext_skel --extname=myext 运行完成后,会在ext目录下生产一个myext扩展目录 三.编写一个hello world简单测试扩展 cd my

  • struts2入门(搭建环境、配置、示例)详解

    在慕课网学习struts2入门课程,在官网下载的最新的struts-2.5.5-all.zip,JDK使用的是jdk1.6,Tomcat9.0,一直报错[java.lang.UnsupportedClassVersionError],版本不一致,可是各种换版本也都不好使,无奈最后找到了一篇较新的博文,按照他的Struts2版本进行了配置,终于可以用了. ------不过还是不太明白为啥struts-2.5.5无论是配jdk1.6还是jdk1.8,还是更换tomcat版本,都不好用.有明白清楚的还

  • Android实现仿淘宝购物车增加和减少商品数量功能demo示例

    本文实例讲述了Android实现仿淘宝购物车增加和减少商品数量功能.分享给大家供大家参考,具体如下: 在前面一篇<Android实现的仿淘宝购物车demo示例>中,小编简单的介绍了如何使用listview来实现购物车,但是仅仅是简单的实现了列表的功能,随之而来一个新的问题,买商品的时候,我们可能不止想买一件商品,想买多个,或许有因为某种原因点错了,本来想买一件来着,小手不小心抖了一下,把数量错点成了三个,这个时候就涉及到一个新的功能,那就是增加和减少商品的数量,今天这篇博文,小编就来和小伙伴们

  • Spring AOP入门Demo分享

    在阅读本文之前,大家可先行参阅<简单理解Spring之IOC和AOP及代码示例>一文,简单了解下ioc和aop的相关内容.下面进入正题. 本文将会一步一步创建一个最简单的例子,来使用Spring的AOP特性,算是一个Spring AOP的入门Demo.作为一个初学者,运行出这么简单的一个Demo也踩了很多的坑. OOP的问题,AOP的补充 当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力.也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系.例如日志功能.日志代

  • Vue组件大全包括(UI组件,开发框架,服务端,辅助工具,应用实例,Demo示例)

    Vue是一款比较流行的JS库,本文为大家介绍一些Vue组件,包括UI组件,开发框架,服务端,辅助工具,应用实例,Demo示例等开源项目 一.Vue常用UI组件 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 iview ★5801 - 基于 Vuejs 的开源 UI 组件库 mint-ui ★5517 - Vue 2的移动UI元素 vue-material ★2790 - 通过Vue Material和Vue 2

  • 通过入门demo简单了解netty使用方法

    这篇文章主要介绍了通过入门demo简单了解netty使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言 最近做一个项目: 大概需求: 多个温度传感器不断向java服务发送温度数据,该传感器采用socket发送数据:该数据以$符号开头和结尾,最后将处理的数据存入数据库: 我想到的处理方式:采用netty来接收和处理数据,然后用mybatis将处理后的数据存入数据库: 我在这之前从来没使用过netty,在网上倒是看到不少关于netty的文

  • laravel5.6 框架邮件队列database驱动简单demo示例

    本文实例讲述了laravel5.6 框架邮件队列database驱动.分享给大家供大家参考,具体如下: 一: 邮件初始参数配置 配置 .env  (demo示例是163邮箱,开启POP3和SMTP服务,获取授权密码) MAIL_DRIVER=smtp MAIL_HOST=smtp.163.com MAIL_PORT=465 MAIL_USERNAME=你的163邮箱地址 MAIL_PASSWORD=你的163邮箱地址对应的授权密码(不是登录密码) MAIL_ENCRYPTION=ssl MAIL

  • Android ListView下拉刷新上拉自动加载更多DEMO示例

    代码下载地址已经更新.因为代码很久没更新,已经很落伍了,建议大家使用RecyclerView实现. 参考项目: https://github.com/bingoogolapple/BGARefreshLayout-Android https://github.com/baoyongzhang/android-PullRefreshLayout 下拉刷新,Android中非常普遍的功能.为了方便便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能.设计最初是参考开源中国的And

  • Android实现调用系统相册和拍照的Demo示例

    本文讲述了Android实现调用系统相册和拍照的Demo示例.分享给大家供大家参考,具体如下: 最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题,用高于4.4版本的系统就崩溃.所以,我还是想提取出来,给大家整理一下,一个比较完整无bug的demo,让大家收藏,留着以后用. 其实对于调用手机图库,高版本的系统会崩溃,是因为获取方法变了,所以我们应该

随机推荐