struts搭建简单web工程步骤
来源:互联网 发布:java fast paxos算法 编辑:程序博客网 时间:2024/06/05 04:34
如果web项目需要采用Struts,则需进行以下步骤;
1.保证项目是web项目
2.导入相关jar包(13)(http://pan.baidu.com/s/1nvIAnaD)
3.web.xml配置为(在原有的web.xml基础上)
<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>
4.写好log4j.xml文件(http://pan.baidu.com/s/1eRRvJgA)以及struts.xml文件
5.根据传统的mvc模式即可进行项目设计(DBHelper(http://pan.baidu.com/s/1nv80QyX))
Struts.xml配置文件的注意事项:
I、关于Struts发送请求时action的基本内容;
第一种:
a、form表单处action的值为A!B.action(<form action="info!login.action"></form>)
b、struts.xml文件的package下的aciton的name值为A,class为方法的全路径,但不需要给method赋值
(<action name="info" class="cn.linkey.action.InfoAction">
<result name="first">/first.jsp</result>
<result name="second">/second.jsp</result>
</action>)
第二种;
a、form表单处action的值为A_B.action(<form action="info_login.action"></form>)
b、struts.xml文件的package下的aciton的name值为A_B,class为方法的全路径,method的值为B
(<action name="info_login" class="cn.linkey.action.InfoAction" method="login">
<result name="first">/first.jsp</result>
<result name="second">/second.jsp</result>
</action>)
第三种:
a.form表单处action的值为A_B.action(<form action="info_login.action"></form>)
b.struts.xml文件的package下的aciton的name值为*_*,class为方法的全路径,method的值为{2}
(<action name="*_*" class="cn.linkey.action.InfoAction" method="{2}">
<result name="{1}">/first.jsp</result>
<result name="second">/second.jsp</result>
</action>)
II、标签属性:
1.package标签属性:(<package name="default" namespace="/" extends="struts-default">)
name: 就package的名字,区分不同的package
extends:继承别的package,通过package的名字继承
namespace:命名空间,"/"表示发布名的后面,匹配发布名后面的前缀
2.action标签属性:(<action name="*_*" class="cn.linkey.action.InfoAction" method="{2}">)
name:请求资源的后缀,不带action
class:请求处理类,默认是AcitonSupport类处理
method:请求处理方法,默认是execute,方法在请求处理类中,
3.result标签属性:(<result name="success" type="redirect"><param name="location">foo.jsp</param></result>)
(绝对路径以斜杠(/)开头,相对于当前的Web应用程序的上下文路径;
相对路径不以斜杠(/)开头,相对于当前执行的action的路径,也就是namespace指定的路径)
name:为action方法中的返回值,缺省为success
type:(在struts2-core.jar/struts-default.xml中可以找到){
chain:用来处理Action 链
dispatcher(默认值):用来转向页面,通常处理 JSP
redirect:重定向到一个URL
redirectAction:重定向到一个 Action
plainText:显示源文件内容,如文件源码
freemarker:处理 FreeMarker 模板
httpheader:控制特殊 http 行为的结果类型
stream:向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据
velocity:向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据
xslt:处理 XML/XLST 模板
}
另外,Dispatcher结果类型的实现是org.apache.struts2.dispatcher.ServletDispatcherResult,
该类的二个属性(property):location和parse,这两个属性可以通过struts.xml配置文件中的result元素的param子元素来设置。
param元素的name属性指定结果类型实现类的属性名,param元素的内容是属性的值
例如:
<result name=“success” type=“dispatcher”>
<param name=“location” >/success.jsp</param>
<param name=“parse” >true</param>
</result>
与<result>/success.jsp</result>默认情况下是等效的。
说明:
A、location参数用于指定action执行完毕后要转向的目标资源,parse属性是一个布尔类型的值,
如果为true,则解析location参数中的OGNL表达式;如果为false,则不解析。parse属性的默
认值就是true.location参数是默认的参数,在所有的Result实现类中,都定义了一个字符串
类型的DEFAULT_PARAM静态常量,专门用于指定默认的参数名。
DEFAULT_PARAM常量的定义:public static final String DEFAULT_PARAM=“location”;
B、在设置location参数时,可以在参数值中使用OGNL表达式。(<param name=“location” >/viewNews.jsp?id=${id}</param>)
关于中文乱码:String username = URLEncoder.encode("张三","utf-8");//先进行编码
III、传参方式(重点):
如需在jsp页面赋值;
*<%@ page contentType="text/html;charset=UTF-8" language="java" %>
*<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 同时需要导入jstl的jar包(1)
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
1.普通的传值方式(Action类中要写非常多的属性以及对应的get/set方法,必然是封装一个JavaBean,则会采用第2种方式)
在Action类中通过get/set方法进行前台参数值的获取,同时实体类中的属性名和input中的name值必须保持一致
jsp页面取值采用${属性名}
2.DomainModel传值
首先创建实体类JavaBean,但input中的name值必须为对象.属性名进行设置
然后用实际的Action类去继承ActionSupport类(com.opensymphony.xwork2.ActionSupport),
可进行实体类显示实例化,进行对象属性打印输出便于测试,但
实际上User类不需要显式的实例化,struts会自动帮你实例化,但前提条件是,传值时需要使用对象.参数名的方式进行传递
jsp 页面取值采用${对象名.属性名}
3.ModelDriven传值
依然要创建User的JavaBean,
然后用实际的Action类去实现ModelDriven<实体类名>接口(com.opensymphony.xwork2.ModelDriven)
重写public 实体类名 getModel(){} 方法
这种方式可以不用在Action类中编写对应的get/set方法,但是需要实例化User类(可采用单例模式)
jsp 页面取值采用${属性名}
Tip:可以去ValueStack当中观察参数的存储,更透彻的理解Struts2的参数传递。
1.保证项目是web项目
2.导入相关jar包(13)(http://pan.baidu.com/s/1nvIAnaD)
3.web.xml配置为(在原有的web.xml基础上)
<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>
4.写好log4j.xml文件(http://pan.baidu.com/s/1eRRvJgA)以及struts.xml文件
5.根据传统的mvc模式即可进行项目设计(DBHelper(http://pan.baidu.com/s/1nv80QyX))
Struts.xml配置文件的注意事项:
I、关于Struts发送请求时action的基本内容;
第一种:
a、form表单处action的值为A!B.action(<form action="info!login.action"></form>)
b、struts.xml文件的package下的aciton的name值为A,class为方法的全路径,但不需要给method赋值
(<action name="info" class="cn.linkey.action.InfoAction">
<result name="first">/first.jsp</result>
<result name="second">/second.jsp</result>
</action>)
第二种;
a、form表单处action的值为A_B.action(<form action="info_login.action"></form>)
b、struts.xml文件的package下的aciton的name值为A_B,class为方法的全路径,method的值为B
(<action name="info_login" class="cn.linkey.action.InfoAction" method="login">
<result name="first">/first.jsp</result>
<result name="second">/second.jsp</result>
</action>)
第三种:
a.form表单处action的值为A_B.action(<form action="info_login.action"></form>)
b.struts.xml文件的package下的aciton的name值为*_*,class为方法的全路径,method的值为{2}
(<action name="*_*" class="cn.linkey.action.InfoAction" method="{2}">
<result name="{1}">/first.jsp</result>
<result name="second">/second.jsp</result>
</action>)
II、标签属性:
1.package标签属性:(<package name="default" namespace="/" extends="struts-default">)
name: 就package的名字,区分不同的package
extends:继承别的package,通过package的名字继承
namespace:命名空间,"/"表示发布名的后面,匹配发布名后面的前缀
2.action标签属性:(<action name="*_*" class="cn.linkey.action.InfoAction" method="{2}">)
name:请求资源的后缀,不带action
class:请求处理类,默认是AcitonSupport类处理
method:请求处理方法,默认是execute,方法在请求处理类中,
3.result标签属性:(<result name="success" type="redirect"><param name="location">foo.jsp</param></result>)
(绝对路径以斜杠(/)开头,相对于当前的Web应用程序的上下文路径;
相对路径不以斜杠(/)开头,相对于当前执行的action的路径,也就是namespace指定的路径)
name:为action方法中的返回值,缺省为success
type:(在struts2-core.jar/struts-default.xml中可以找到){
chain:用来处理Action 链
dispatcher(默认值):用来转向页面,通常处理 JSP
redirect:重定向到一个URL
redirectAction:重定向到一个 Action
plainText:显示源文件内容,如文件源码
freemarker:处理 FreeMarker 模板
httpheader:控制特殊 http 行为的结果类型
stream:向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据
velocity:向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据
xslt:处理 XML/XLST 模板
}
另外,Dispatcher结果类型的实现是org.apache.struts2.dispatcher.ServletDispatcherResult,
该类的二个属性(property):location和parse,这两个属性可以通过struts.xml配置文件中的result元素的param子元素来设置。
param元素的name属性指定结果类型实现类的属性名,param元素的内容是属性的值
例如:
<result name=“success” type=“dispatcher”>
<param name=“location” >/success.jsp</param>
<param name=“parse” >true</param>
</result>
与<result>/success.jsp</result>默认情况下是等效的。
说明:
A、location参数用于指定action执行完毕后要转向的目标资源,parse属性是一个布尔类型的值,
如果为true,则解析location参数中的OGNL表达式;如果为false,则不解析。parse属性的默
认值就是true.location参数是默认的参数,在所有的Result实现类中,都定义了一个字符串
类型的DEFAULT_PARAM静态常量,专门用于指定默认的参数名。
DEFAULT_PARAM常量的定义:public static final String DEFAULT_PARAM=“location”;
B、在设置location参数时,可以在参数值中使用OGNL表达式。(<param name=“location” >/viewNews.jsp?id=${id}</param>)
关于中文乱码:String username = URLEncoder.encode("张三","utf-8");//先进行编码
III、传参方式(重点):
如需在jsp页面赋值;
*<%@ page contentType="text/html;charset=UTF-8" language="java" %>
*<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 同时需要导入jstl的jar包(1)
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
1.普通的传值方式(Action类中要写非常多的属性以及对应的get/set方法,必然是封装一个JavaBean,则会采用第2种方式)
在Action类中通过get/set方法进行前台参数值的获取,同时实体类中的属性名和input中的name值必须保持一致
jsp页面取值采用${属性名}
2.DomainModel传值
首先创建实体类JavaBean,但input中的name值必须为对象.属性名进行设置
然后用实际的Action类去继承ActionSupport类(com.opensymphony.xwork2.ActionSupport),
可进行实体类显示实例化,进行对象属性打印输出便于测试,但
实际上User类不需要显式的实例化,struts会自动帮你实例化,但前提条件是,传值时需要使用对象.参数名的方式进行传递
jsp 页面取值采用${对象名.属性名}
3.ModelDriven传值
依然要创建User的JavaBean,
然后用实际的Action类去实现ModelDriven<实体类名>接口(com.opensymphony.xwork2.ModelDriven)
重写public 实体类名 getModel(){} 方法
这种方式可以不用在Action类中编写对应的get/set方法,但是需要实例化User类(可采用单例模式)
jsp 页面取值采用${属性名}
Tip:可以去ValueStack当中观察参数的存储,更透彻的理解Struts2的参数传递。
阅读全文
0 0
- struts搭建简单web工程步骤
- maven搭建web工程的步骤
- 用Ant,Struts搭建简单工程应用环境
- struts+hibernate工作原理和简单工程创建步骤(附工程下载地址)
- Struts工程的创建步骤
- struts2 web应用框架的简单搭建步骤
- 搭建一个简单的struts2.0的web工程
- 使用Django搭建一个简单的Python Web工程
- 快速搭建简单的springMvc框架的动态web工程
- Struts工程web.xml配置
- web工程搭建
- Maven搭建Web工程
- maven搭建web工程
- eclipse开发web工程步骤
- eclipse 导入Web工程步骤
- struts2原理及创建struts工程步骤
- Web工程转成Maven工程详细步骤
- 搭建简单Maven工程
- Web测试方法大全
- Mac中允许任何来源的app安装
- 设计模式之观察者模式
- linux课程培训哪的好?
- 微信小程序使用百度api获取天气信息 —— 微信小程序教程系列
- struts搭建简单web工程步骤
- 关于$(this)和this、[object object]和[object HTMLImageElement]区别和处理
- Python数据可视化之Matplotlib基础
- List集合排序
- 一起学Kotlin(5)
- Ubuntu-**-amd64.iso 与 Ubuntu-**-i386.iso不同
- linux下多线程编程原以及互锁、条件变量、读写锁、信号等通信机制
- ubuntu和windows之文件共享 : Samba
- Google File System及其继任者Colossus