Struts2应用的开发流程
Struts2的开发流程
为了能够在eclipse中使用Struts2在进行开发时,需要根据需要导入一些有关的jar包;
在官网下载相关的压缩包,这里下载了两个:struts-2.3.30-all.zip和struts-2.3.30-docs.zip,解压到同一个文件夹中。
在eclipse中新建了新的Dymamic Web Project以后,为该项目添加Struts2支持:
1.复制Struts2解压目录下struts2-blank.war解压后WEB-INF\lib目录下的所有jar包到web项目中的WebContent\WEB-INF\lib下;
2.把这些复制的jar包导入项目中去。
开始使用Struts2开发:
1.在web.xml中定义拦截器拦截用户请求:
如果eclipse中生成的Dynamic Web Project中没有自动生成web.xml文件,可以从Tomcat相关的文件夹中找到一个默认的web.xml文件,把此文件复制到项目的WEB-INF目录下(不是WEB-INF\lib下)。
也可以在struts2-blank.war解压后目录的WEB-INF下直接复制一个web.xml。
修改此web.xml文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 定义核心拦截器 -->
<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> </web-app>
2.定义包含表单数据的JSP页面:
写一个提交请求的JSP页面,此JSP页面将会将请求提交给相关的Action类来处理。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!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>Insert title here</title> </head> <body> <s:form action="test_1"> <s:textfield name="username" key="username"/> <s:submit key="login" value="login"/> </s:form> </body> </html>
3.定义处理用户请求的Action类:
写一个与以上JSP关联的Action类来处理该JSP提交的请求。在eclipse中直接放在在src目录下即可
package testAction; import com.opensymphony.xwork2.ActionSupport; public class Test_1Action extends ActionSupport{ //定义封装请求参数的成员变量 private String username; //setter、getter方法 public void setUsername(String username){ this.username = username; } public String getUsername(){ return this.username; } //定义处理请求的execute方法 public String execute()throws Exception{ if(getUsername()!=null){ return SUCCESS; }else{ return ERROR; } } }
4.编写物理视图资源文件:
为了简单,我们把物理视图资源文件直接放在项目的webContent目录下
error.jsp:
<%@ 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>error page</title> </head> <body> 错误页面!username为空! </body> </html>
welcome.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!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>welcome page</title> </head> <body> 登陆成功! </body> </html>
5.配置处理用户请求的Action类并配置Action的处理结果和物理视图资源的映射关系::
使得JSP页面的请求能够准确找到与此JSP页面相关的Action类。
配置Action需要在项目的src目录下添加struts.xml文件,此文件的默认文件也可以在struts2-blank.war解压后目录的WEB-INF\classes下找到,把其修改为如下内容:
<?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> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="test" extends="struts-default"> <!-- 定义了名为test_1的Action; 处理请求的Action类为testAction.Test_1Action.java --> <action name="test_1" class="testAction.Test_1Action"> <!-- 定义逻辑视图与物理视图之间的映射关系 --> <result name="error">error.jsp</result> <result name="success">welcome.jsp</result> </action> </package> </struts>
Struts2应用的开发流程的更多相关文章
- Struts2学习笔记--Struts例子及开发流程
参考资料:http://blog.csdn.net/hntyzgn2010/article/details/5547753 http://chenlh.iteye.com/blog/464341 入门 ...
- 一 Struts2 开发流程
SSH与SSM简介SSM:Spring+SpringMVC+MybatisSSH:Struts2+Hibernate+SpringStruts2:是侧重于控制层的框架Hibernate:是一个ORM( ...
- struts2开发流程及配置,域对象对数据存储的3种方式
一.开发流程 1)引入 jar 包,其中必须引入的有(我是用的struts是2.3.32) commons-fileupload-1.3.2.jar |文件上传下载commons-io-2.2 ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- 小谈Scrum敏捷开发流程
一晃眼,有两年没有写博客了,回顾前两年,各种奔波,各种忙碌,也有不少的收获.从今天开始,我要把这些收获都分享在这里. 其实这两年,对我影响最大的是开发流程.总所周知,一个好的开发流程,对于项目的进行, ...
- 我理解的Sitecore开发流程
Sitecore是一个强大的支持快速开发CMS建站的平台,进入sitecore后台可以看到 它主要有3个元素: 1.Templates模板 Data template:类似于面向对象编程中的类或结构体 ...
- C++的性能C#的产能?! - .Net Native 系列《二》:.NET Native开发流程详解
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- git开发流程、常用命令及工具、TortoiseGit使用及常见问题
根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支. 一.开发流程 - 从远程服务器的master,clone一份项目文件到本地,然后本地master的基础上br ...
- 软件开发流程 Software development process
软件开发流程(Software development process)即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法.软件的总体结构设计和模块设计.编程和调试.程序联调和测试以 ...
随机推荐
- 关于基于.NET Framework的网络通信程序底层扫盲
引自<三维游戏引擎的设计与实现>书中9.3节: 如果服务端在.Net Framework基础上开发,那么可以直接选择使用.Net Framework提供的Socket类, ...
- SqlServer 的提示符(Option/With等提示符)不是什么时候都可以用的
我们在做SqlServer的查询调优的时候,经常会在语句末尾用到option(loop/merge/hash join)或在join语句前直接声明loop/merge/hash,来强制SqlServe ...
- Hadoop :map+shuffle+reduce和YARN笔记分享
今天做了一个hadoop分享,总结下来,包括mapreduce,及shuffle深度讲解,还有YARN框架的详细说明等. v\:* {behavior:url(#default#VML);} o\:* ...
- android 项目学习随笔五(JSON解析)
1.利用Xutils获取网络数据 /** * 从服务器获取数据 需要权限: <uses-permission * android:name="android.permission.IN ...
- BAT 批处理脚本 教程
第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以 ...
- Linux内核调试方法总结【转】
转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...
- mmap直接控制底层【转】
转自:http://blog.csdn.net/xyyangkun/article/details/7830149 版权声明:本文为博主原创文章,未经博主允许不得转载. 这是在mini6410上测试成 ...
- java 调用grads 自动批量生成图片
将 -lbcx 命令 后面的4个参数(gs文件名.参数1.参数2.参数3) 放在单引号里面就可以执行了.
- Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
这行代码: List<Cat> catList =session.createQuery("from Cat p where p.name.first_name=?") ...
- Oracle 11gR2新建空表不分配Segment
一.引言: 在看<收获,不止Oracle>的神奇,走进逻辑体系世界一章时,需要新建一张表查看Extents的情况,由于该书的环境是ORACLE10G的,因此新建空表以后立刻就分配Segme ...