struts2简单示例
今天写一个struts2的例子,目的是为了让大家明白struts2的基本流程,其实框架没有大家想象的那么难,说白了struts2的本质就是一个大的Servlet,即原本需要提交到Servlet处理的部分现在通过配置文件将其交给普通的Class类进行处理。
首先新建一个javaWeb项目,然后把struts2所依赖的包导入到lib下(可以百度一下也可以直接到官网上下载),然后在web.xml中对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>
在index.jsp中写如下代码:
<form method="post" action="testAction">
名称:<input type="text" name="name"/>
<input type="submit" value="提交"/>
</form>
接下来是写struts的配置文件struts.xml,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="testaction" namespace="/" extends="struts-default">
<action name="testAction" class="com.struts.action.TestAction">
<result name="success">/success.jsp</result>
<result name="error">/index.jsp</result>
</action>
</package>
</struts>
其中一个action对应一个响应,在index.jsp中action="testAction"所以此处action的name="testAction"这是一一对应的关系。然后此处的class对应的则是交给谁去处理,根据配置文件我们在com.struts.action包中新建一个TestAction的类,此类的内容如下:
package com.struts.action; public class TestAction {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute(){
if ("username".equals(name)) {
return "success";
} else {
return "error";
} }
}
在这里我们需要写一个返回值为String类型的execute方法,这里的return对应struts.xml中的result的name属性,而struts.xml中的result的内容这对应相应的页面。
这里的字段名称则是对应index.jsp中的name,一般我们在servlet中是用request.getParameter("name")得到的,但是在struts2中我们只需要把字段封装一下,剩下的交给struts2去做。
当然还有一个问题就是execute方法是默认的方法,如果我们的方法名称不为execute则需要在struts.xml中的action中加一个属性:method="对应方法名称",这样struts2就会调用对应类的对应方法。
在TestAction中的第12行这里我只是进行了简单的判断,大家可以根据自身情况连接数据库来做一个登陆的例子锻炼一下。
struts2简单示例的更多相关文章
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
- XML引入多scheme文件约束简单示例
XML引入多scheme文件约束简单示例,用company.xsd和department.xsd来约束company.xml: company.xsd <?xml version="1 ...
随机推荐
- 瞬间从IT屌丝变大神——HTML规范
HTML规范包含以下内容: DTD统一用<!DOCTYPE HTML PUBLIC "_//W3C//DTD XHTML 1.0 Transitional//EN"" ...
- POJ-1002 解题报告
1.题目描述 http://poj.org/problem?id=1002 2.解题过程 按部就班来解题的话,这个题目很容易写出来,这是我的第一个版本的代码,思路是读入一行电话字符串,均转化为整型 ...
- linux 配置免密码登录
主要就是两步 : 1. scp ~/.ssh/id_rsa.pub root@远程ip地址:~/ 2. cat id_rsa.pub >> ~/.ssh/authorized_keys,把 ...
- linux 系统维护命令
cat /home/username/.bash_history :查看用户的历史操作记录 (centos , mac 支持) last -x : 使用root登陆使用last -x可查看用户登陆历史 ...
- Git 一些日常使用积累
本来不想写这样的东西的,因为随处谷歌百度都有一大堆!但是,我却总是在百度谷歌,我在想,为什么我不自己写一篇存进来,顺便加深印象呢?既然这样,这篇随笔,就真的变成随笔好了,随时修改,随时添加. Git ...
- CodeForces 173C Spiral Maximum (想法、模拟)
Spiral Maximum Time Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Sub ...
- TypeScript 素描 - 模块
/* 其实前面一些都是废话,因为都和C#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...
- window.open()打开窗口的几种方式
1. window.open("http://www.baidu.com/", "_search");//在一个新的窗口打开百度,并且使URL地址出现在搜索栏中 ...
- MongoDB 快速入门--中级
索引 ensureIndex 用来创建索引,需要注意的就是一个集合最多也就64个索引 如果没加所有就是表扫表,速度很慢, 当然如果索引的键有多个,就必须考虑顺序 拓展索引 同样的也可以为内嵌文档 建立 ...
- ie6的兼容问题及解决方案
1.png24位的图片在ie6浏览器上会出现背景,解决方案是做成png8位: 2.浏览器默认的margin和padding不同,解决方法是用全局重置来统一,即是*{margin:0;padding:0 ...