框架(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. Java JPA设置默认值、Timestamp设置、自动获取时间

    设置默认值 @Column(name="state",columnDefinition="tinyint default 0") private Integer ...

  2. 谈谈mybatis中的#与$的区别

    #相当于对数据 加上 双引号,$相当于直接显示数据 . #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:", 如果传入的值是id,则解析成的sql为order by &q ...

  3. mailto - 简单多媒体邮件发送程序

    SYNOPSIS mailto  [-a] [-c] [-s] [recipient name(s)] DESCRIPTION mailto 程序是一个用于发送MIME格式的多媒体邮件(MIME格式是 ...

  4. padding溢出

    一.padding溢出 参考代码: <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  5. 一个有python扩展库的下载网站

    https://www.lfd.uci.edu/~gohlke/pythonlibs/

  6. Manacher || Luogu P3805【模板】manacher算法

    题面:[模板]manacher算法 代码: #include<cstdio> #include<cstring> #include<iostream> #defin ...

  7. unkown类型

    1,任何类型的值都可以赋给 unkown类型 2. 如果没有类型断言或基于控制流的类型细化时 unknown 不可以赋值给其它类型,此时它只能赋值给 unknown 和 any 类型 3. 如果没有类 ...

  8. MyEclipse使用教程:使用Workbench和Perspectives

    [MyEclipse CI 2019.4.0安装包下载] workbench指的是加载IDE时看到的内容,它通常包含一个perspective,这是相关视图和编辑器的布局.您可以根据正在进行开发的类型 ...

  9. 包、time、datetime、hashlib和hmac、request、re

    目录 包 包的特点 time模块 datetime模块 hashlib模块和hmac模块 hmac密钥(加盐) typing模块 request模块 正则模块 以下必须得记住 哪些做了解 包 包,这里 ...

  10. Java_环境变量

    介绍 第一步:下载JDK 第二步:搭建环境,双击JDK安装程序 第三步:配置环境变量 第四步:检查JDK安装是否成功 介绍: .java 源文件 我们所编写的代码都在这个文件中 .class 字节码文 ...