框架(frameWork):某一种应用的半成品
  struts2: 表现层 处理与页面进行交互的相关功能 
  hibernate: 持久层 负责业务逻辑数据的持久化 
  spring: 业务层 负责复杂的业务逻辑  
  mybatis: 持久层 负责业务逻辑数据的持久化 跟数据库做交互

struts1 与 struts2 的区别:
  1.struts2 是在webwork2的基础上发展而来的,他不依赖于struts API 和 servlet API
  2.struts2提供了拦截器,利用拦截器可以进行AOP(切面)编程
  3.struts2提供了类型转换器,可以使用转换器把参数转化成我们需要的类型
  4.struts2提供了多种表现层技术
  5.struts2的输入校验可以对指定的方法进行校验
  6.struts2提供了全局范围,包范围、action范围 的国际化资源文件管理
  ※struts2太灵活,不易控制

搭建 struts2 的开发环境:
  1.导入jar包:找到所需的jar包:发行包的lib目录中

  2.在工程 src 下编写struts2的配置文件  struts2.xml

  

 <?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.devMode" value="true"></constant> <package name="ly" namespace="/" extends="struts-default">
<action name="helloWorld" class="cn.gs.ly.HelloAction" method="sayHello">
<result name="success" type="dispatcher">/1.jsp</result>
</action>
</package>
</struts>

  3. 配置核心控制器,就是一个过滤器  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>Struts2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <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>

如果TOmcat启动成功,没有报错,证明环境搭建成功!

注解方式 

1.导入asm等相关jar包

2.web.xml 添加struts 2 核心过滤器

3.src目录下新建com.yzpc.action包,并在该包下创建LoginAction类继承ActionSupport类

开发一个Struts2案例

1、编写struts.xml配置文件

 <?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><!--这是Struts2配置文件的根元素-->
<constant name="struts.devMode" value="true"></constant><!-- 指定容器自动加载 --> <package name="ly" namespace="/test" extends="struts-default">
<!--
pageckage:方便管理动作元素
name:必须有包的名称,配置文件中必须保证唯一。
namespace:该包的名称空间,一般是以"/"开头
extends:继承的父包的名称。struts-default名称的包是struts2框架已经命名好的一个包。(在struts2-core.jar的struts-default.xml中)
abstract:是否是抽象包。没有任何action元素的包就是抽象包(java类)
-->
<action name="helloWorld" class="cn.gs.ly.HelloAction" method="sayHello">
<!--
action:代表一个请求动作
name:动作的名称,同包中必须唯一。
class:负责处理的JavaBean的类全名。动作所对应的处理类,包全名.类名
method:JavaBean类中的对应处理方法。(动作方法:特点是,public String 方法名(){})
-->
<result name="success" type="dispatcher">/1.jsp</result>
<!--
result:结果类型
type:跳转的方式
name:动作方法返回的字符串
主体内容:跳转的具体地址
-->
</action>
</package>
</struts>

2. 根据配置文件,创建需要的javabean和对应的动作方法, 在动作方法中完成逻辑调用。

 package cn.gs.ly;

 import com.opensymphony.xwork2.ActionSupport;

 public class HelloAction extends ActionSupport{
private String message; public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public String sayHello(){
message = "hello nice to meet you!";
return "success";
} @Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return "success";
} }

※struts 2  中预定义的ResultType

3、编写网页文件,显示结果

 <%@ page language="java" contentType="text/html"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${message}
<h1>1.jsp</h1>
</body>
</html>

4、访问helloworld动作的方式:

http://localhost:8080/struts2/test/helloworld 应用名称/包的名称空间/动作的名称

搜索顺序

 http://localhost:8080/struts2day01/test/a/b/c/helloworld
/test/a/b/c:名称空间
helloworld:动作名称 搜索顺序:名称空间
/test/a/b/c 没有helloworld
/test/a/b 没有helloworld
/test/a 没有helloworld
/test 有了,调用执行
struts.xml 中的各项默认值
package如果没有namespace 默认namespace="/";
action如果没有class,就会找 com.opensymphony.xwork2.ActionSupport
action如果没有method,就会找 public String execute(){} result name的常量值:
SUCCESS:success;
NONE:none;
ERROR:error;
INPUT:input;
LOGIN:login;
result如果没有 type,默认是dispatcher
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
<result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" />
</result-types> dispatcher:普通转发到某个页面
chain:普通抓发到某个动作
redirect:重定向到某一页面
redirectAction:重定向到某一动作
plainText:以纯文本的形式输出jsp的内容 动态设置action属性
<action name="helloWorld6" class="cn.gs.wwg.HelloAction" >
<param name="message">i am best cool</param>
<result name="success" >/5.jsp</result>
</action>
取得action属性
<result name="success" type="dispatcher">/6.jsp?msg=${message}</result>
---6.jsp中取值 : ${param.msg} 控制action的后缀名:指定需要struts2处理的请求后缀
<constant name="struts.action.extension" value="do"></constant>
开发中配置文件的更改,在访问时让框架自动重新加载:指定容器自动加载
<constant name="struts.devMode" value="true"></constant>

各种result使用示例

 <?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.devMode" value="true"></constant>
<constant name="struts.action.extension" value="do,,action"></constant> <!-- result 元素写法,方式一。 -->
<package name="ly" namespace="/" extends="struts-default">
<action name="helloWorld" class="cn.gs.ly.HelloAction" method="sayHello">
<result name="success" type="dispatcher">/1.jsp</result>
</action>
</package> <!-- result 元素写法,方式二。 -->
<package name="ly2" namespace="/test2" extends="struts-default">
<action name="helloWorld2" class="cn.gs.ly.HelloAction" method="sayHello">
<result name="success" type="chain">helloWorld21</result>
</action>
<action name="helloWorld21">
<result name="success" type="dispatcher">/2.jsp</result>
</action>
</package> <package name="ly3" namespace="/test3" extends="struts-default">
<action name="helloWorld3" class="cn.gs.ly.HelloAction" method="sayHello">
<result name="success" type="redirectAction">
<param name="actionName">helloWorld31</param>
<param name="namespace">/test31</param>
</result>
</action>
</package>
<package name="ly31" namespace="/test31" extends="struts-default">
<action name="helloWorld31">
<result name="success" type="dispatcher">/3.jsp</result>
</action>
</package> <package name="ly4" namespace="/test4" extends="struts-default">
<action name="helloWorld4" >
<result name="success" type="plainText">/4.jsp</result>
</action>
</package> <!-- 动态的给Action类的属性赋值 -->
<package name="ly5" namespace="/test5" extends="struts-default">
<action name="helloWorld5" class="cn.gs.ly.HelloAction">
<param name="message">what is your name</param>
<result name="success" >/5.jsp</result>
</action>
</package> <!-- 获取action的值 --> <package name="ly6" namespace="/test6" extends="struts-default">
<action name="helloWorld6" class="cn.gs.ly.HelloAction" method="sayHello">
<result name="success" type="dispatcher">/6.jsp?msg=${message}</result>
</action>
</package> </struts>

struts2 基础的更多相关文章

  1. Struts2入门1 Struts2基础知识

    Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...

  2. Struts2基础学习2

    Struts2基础学习2 项目结构,测试页面与实体类 <%@ page language="java" contentType="text/html; charse ...

  3. Struts2基础入门

    Struts2基础入门 创建一个web工程 0)导包并且创建一个核心配置文件 <?xml version="1.0" encoding="UTF-8"?& ...

  4. Struts2基础学习总结

    引用自:http://www.cnblogs.com/jbelial/archive/2012/05/10/2486886.html Struts 2是在WebWork2基础发展而来的. 注意:str ...

  5. 经典MVC框架技术-struts2基础知识

    Struts2框架简介 struts2框架是在struts1和webwork技术的基础上,进行合并的全新框架,struts2以Webwork为核心,采用拦截器来处理用户的请求,这样的设计使得业务逻辑控 ...

  6. Struts2框架学习第三章——Struts2基础

    本章要点 —  Struts 1框架的基本知识 — 使用Struts 1框架开发Web应用 —  WebWork框架的基本知识 — 使用WebWork框架开发Web应用 — 在Eclipse中整合To ...

  7. (一)Struts2 基础

    一.Struts简介 1.1 历史 虽然Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言.Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框 ...

  8. struts2 基础学习

      Struts 2是在WebWork2基础发展而来的. 注意:struts 2和struts 1在代码风格上几乎不一样. Struts 2 相比Struts 1的优点: 1.在软件设计上Struts ...

  9. 2. Struts2 基础

    1. Struts2简介 Struts2是一个WEB端MVC框架.作为比较早的MVC 框架之一,Struts2在使用中还是比较多的.虽然个人感受没有SpringMVC还那么的好用 Struts2 官网 ...

随机推荐

  1. Bootstrap前端框架快速入门专题

    1.Bootstrap简介 Bootstrap,出自自 Twitter,是目前最受欢迎的前端框架. Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的前端框架,它简洁灵活,使得 W ...

  2. php 多维数组转一维数组

    1.巧用 RecursiveIteratorIterator $k_arrays_arrays_tmp = iterator_to_array(new RecursiveIteratorIterato ...

  3. python基础操作---list

    #coding:utf-8 list1 = ['physics', 'chemistry', 1997, 2000]; list2 = [1, 2, 3, 4, 5 ]; list3 = [" ...

  4. Linux-day-1

    1. ls    作用:列出文件信息,默认为当前目录下 常用选项:         -a: 列出所有的文件,包括所有以.开头的隐藏文件         -d: 列出目录本身,并不包含目录中的文件    ...

  5. PAT Advanced 1058 A+B in Hogwarts (20 分)

    If you are a fan of Harry Potter, you would know the world of magic has its own currency system -- a ...

  6. Codeforces 934 最长不递减子序列 多项式系数推导

    A B C 给你一个长度为N的01串 你可以翻转一次任意[L,R]的区间 问你最长的不递减序列为多少长 处理出1的前缀和 和2的后缀和 然后N^2 DP 处理出 [L,R]区间的最长不递增序列 #in ...

  7. Floyd Cycle Detection

    Floyd判圈算法能在O(n)时间复杂度内判断迭代函数或链表中是否有环,并求出环的长度与起点 判断环存在 通常采用快慢指针的方式来判断环是否存在 从绿色起点G开始,快指针每次走2步,慢指针每次走1步, ...

  8. iptables常用语法与案例

    常用命令语法: [root@www ~]# iptables [-t tables] [-L] [-nv] 选项与参数: -t :后面接 table ,例如 nat 或 filter ,若省略此项目, ...

  9. java 工具包

    https://www.cnblogs.com/aligege/p/8521934.html https://gitee.com/loolly/hutool https://blog.csdn.net ...

  10. springboot+mybatis 配置sql打印日志

    第一种: 配置类型 # 配置slq打印日志 logging.level.com.lawt.repository.mapper=debug重点: #其中   com.lawt.repository.ma ...