为了账号安全,请及时绑定邮箱和手机立即绑定

Struts2入门

  • Action内置的五个系统属性

    查看全部
  • @Struts2---处理结果类型

    1.Structs2处理流程
    用户请求Structs框架控制器(Action)Structs框架视图资源
    返回String,提供代码复用性,有利于框架分离。

    2.Action中五种内置属性(com.opensymphony.xwork2.Action)
    (1) SUCCESS  Action正确的执行完成,返回相应的视图,success是name属性的默认值。
    (2) NONE  表示Action正确的执行完成,但并不返回任何事视图。
    (3) ERROR  表示Action执行失效,返回错误处理视图。
    (4) LOGIN  Action因为用户没有登录的原因没有正确执行,将返回该登录视图,要求用户进行登录验证
    (5) INPUT  Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入界面,一般在应用中,会对这些 参数进行验证,如果验证没有通过,将自动返回该视图。

    查看全部
  • @Struts2---接收参数

    接收参数
    1.使用Action的属性接受参数,在Action中定义需要接受的属性,并写它的set/get方法。
    2.使用DomainModel接受参数,创建实体类定义需要接受的属性,并set/get方法,在Action中创建实体类名属性。并在界面进行指定。
    3.使用ModelDriver接受参数,在Action中实现ModelDriver<实体类名>接口,并实现方法返回当前需要转换的对象,删除set/get方法,并对 对象 进行实例化,并取消指定。
    4.request
    5.获取List集合中的参数。获取多个参数。

    方式一:直接在action类中创建相应的属性和getter和setter,和前端的name名字相同。eg:前端的username,在action类中就要建立一个private String username; Struts会自动映射为这个属性赋值

    方式二:使用DomainModel,将username 和password两个属性封装为一个类User(必须是标准的JavaBean),在action中声明这个属性:private User user; 同时为user设置getter和setter;在前端中的name需要设置为user.name和user.password,才能映射成功

    方式三:使用ModelDriven<T>接口,这个action必须实现这个接口的public T getModel()方法。此时声明的属性必须实例化,eg: private User user = new User(); 同时不需要getter和setter。前端的name也只需要写username和password就可以,不需要再加域了。这种方法时最推荐的方法,因为可以减少前后端的耦合

    查看全部
  • @Struts2---编写struts2后缀的三种方式

    方式一:在struts.xml中设置

    <constant name="struts.action.extension" value="do"></constant>

    方式二:在struts.properties中设置

    struts.action.extension=action,do

    方式三:在web.xml中的struts2过滤器中初始化参数

    <init-param>
     <param-name>struts.action.extension</param-name>
     <param-value>do</param-value>
    </init-param>


    查看全部
  • @Struts2---默认Action

    <default-action-ref name="index"></default-action-ref>
    <action name="index">
       <result>/error.jsp</result>
    </action>
    查看全部
  • @Struts2---指定多个配置文件

    1.如果有很多个Action的配置文件,则需要在struts.xml中使用<include file="fileName.xml"/>来包含其他的配置文件

    2.struts文件中添加<constant name="struts.i18n.encoding" value="UTF-8"></constant>以防乱码问题的出现

    3.配置文件和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>
    ...
    </struts>
    查看全部
  • @Struts2---动态方法调用
    动态方法调用是为了解决一个Action对应多个请求的处理,以免Action太多。

    三种方式
    1:指定method属性

    <action name="addAction" method="add" class="com.action.HelloWorldAction">
    http://localhost:8080/struts2/aaa/addAction.action

    2:感叹号方式

    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
    <action name="helloworld" class="com.action.HelloWorldAction">
          <result >/result.jsp</result>
          <result name="add">/add.jsp</result>
          <result name="update">/update.jsp</result>
    </action>
    http://localhost:8080/struts2/aaa/helloworld!add.action

    3:通配符方式(推荐)

    <action name="*_*_*" method="{2}" class="com.{3}.{1}Action">
          <result >/{2}.jsp</result>
          <result name="add">/{2}.jsp</result>
          <result name="update">/{2}.jsp</result>
    </action>
    http://localhost:8080/struts2/aaa/HelloWorld_add_action.action
    查看全部
  • @Struts2---Action搜索顺序

    例子:
    http://localhost:8080/product_one/hellowworld.jsp可以进入result.jsp页面
    http://localhost:8080/product_one/aaa/ddd/ccc/hellowworld.jsp也可以进入result.jsp页面

    Action搜索顺序:
    http://localhost:8080/struts2/path1/path2/path3/student.action
    第一步:判断package是否存在,如:path1/path2/path3/

    如果package存在
    第二步:则判断该package中action是否存在,如果不存在则到默认namespace的package里面寻找action
    第三步:如果没有,则报错

    如果package不存在:
    第二步:检查上一级路径的package是否存在(直到默认namespace),重复第一步
    第三步:如果没有则报错

    如果请求为/login.action,系统会根据根命名空间("/")中查找名为login的Action,如果在根命名空间中找到了名为login的Action,则该Action处理用户的请求;否则系统将转为在默认命名空间中寻找名为login的Action,如果默认的命名空间中有名为login的Action,则由该Action处理用户的请求。如果两个命名空间中都找不到名为login的Action,那么系统将出现错误。

    注意:命名空间只有一个级别。如果请求的URL是/bookservice/search/get.action系统将先在/bookservice/search的命名空间下查找名为get的Action,如果在该系统命名空间内找到名为get的Action,则由该Action处理该用户的请求;如果在该命名空间中没有找到名为get的Action,系统将直接进入默认的命名空间中查找名为get的Action,而不会在bookservice的命名空间下查找名为get的Action。
    可以多个包使用同一个命名空间,但是相同的命名空间相当于同一个模块,也就是同一个包。
    一个包中可以有name值相同的action,但是后面的action会把前面同名的action覆盖掉

    查看全部
  • @Struts2---struts2访问Servlet API的三种方式

    Servlet API
        HttpServletRequest
        HttpServletResponse
        ServletContext

    Struts2没有Servlet API

    Struts2访问Servlet API的三种方式
    1>使用ActionContext访问Servlet API(推荐使用)

    ActionContext actionContext=ActionContext.getContext();
    Map<String, Object> sessionMap=actionContext.getSession();
    sessionMap.put("user", user);

    2>使用IOC的方式访问Servlet ApI
    实现****Aware接口,如实现SessionAware接口,重写setSession方法

    public void setSession(Map<String, Object> sessionMap) {
        this.sessionMap=sessionMap;
    }
    sessionMap.put("user",user);

    3>耦合方式(ServletActionContext)访问Servlet API(不推荐使用)

    ServletActionContext.getPageContext();
    ServletActionContext.getRequest();
    ServletActionContext.getResponse();
    ServletActionContext.getServletContext();
    查看全部
  • @Struts2---深入8个方面

    1.访问Servlet API
    2.Action搜索顺序
    3.动态方法调用
    4.指定多个配置文件
    5.默认Action
    6.Struts2后缀
    7.接受参数
    8.处理结果类型

    查看全部
  • web.xml
    任何MVC框架都需要与Web应用整合,这就不得不借用于web.xml文件,只有配置web.xml文件中Servlet才会被应用加载

    Model2:JSP+JavaBean+Servlet

    通常,所有MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,需要加载StrutsPerpareAndExecuteFilter,只负责Web应用加载StrutsPerpareAndExecuteFilter,StrutsPerpareAndExecuteFilter将会加载Struts2框架。
    遇到.acton文件就会拦截并进行处理

    struts.xml
    struts2的核心配置文件,在开发过程中利用率最高。
    该文件主要负责管理Action的映射,以及该Action包含的Result定义等。

    struts.xml中包含的内容:
    1、全局属性
    2、用户请求和相应Action之间的对应关系
    3、Action可能会用到的参数和返回结果
    4、各种拦截器的配置

    struts.properties
    struts2框架的全局属性文件,自动加载
    和strusts.xml在一个路径
    该文件包含很多key-value键值对。
    这个文件可以不要,可以在structs.xml中进行配置,使用constant元素可以替换

    .dtd就是约束struts.xml中可以有哪些标签不能有哪些标签
    可以通过 <include file=“”>包含其他文件
    可以把每个功能模块独立到一个xml配置文件中,然后用Include节点引用
    <package>
    package提供了将多个Action组织成为一个模块的方式
    package的名字必须是唯一的,可以在这个包上加一些拓展的包
    <package name="包名" extends="继承的父类的名称" abstract设置package的属性为抽象,抽象的package不能定义action的值, ture或false namespace 包的命名空间>

    <interceptors>为拦截器
    可以为拦截器定义name(名称)和class(类路径)
    <interceptor-stack>拦截器栈

    <default-interceptor-ref name="">定义默认的拦截器,每个Action都会自动引用如果

    查看全部
    0 采集 收起 来源:struts2核心文件

    2018-06-12

  • @Struts2---struts.properties模板

    #制定默认编码集,对于请求参数带有中文的情况应该设置成gbk.gb2312,默认值utf-8
    struts.i18n.encoding=utf-8
    #是否每次HTTP请求到达时,都重新加载国际化资源文件,默认为false
    struts.i18n.reload = true
    #但struts.xml改动后,是否重新加载该文件,在开发阶段建议设置成true,提高开发效率,默认为false
    struts.configuration.xml.reload=true
    #是否使用struts2的开发模式,可获得更多报错信息,便于调试,在开发阶段设置为true,默认为false
    struts.devMode =true
    #设置浏览器是否缓存静态页面,开发阶段设置为false,以获得服务器最新响应,默认为true
    struts.serve.static.browserCache=true
    #指定后缀为.action形式的请求可以被struts2处理,可配置多个请求后缀,比如.do,struts等,配置多个后缀名用逗号隔开
    struts.action.extendsion=action,do,struts2,
    #配置服务器运行时的端口号,一般情况下该属性不用修改,如果端口号占用则重新分配端口号,默认为80
    struts.url.http.port = 8080
    查看全部
    2 采集 收起 来源:struts2核心文件

    2018-06-12

  • @Struts2---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>
    	<include file=""></include>
    	<package name="" extends="" namespace="" abstract="" externalReferenceResolver="">
    		<interceptors>
    			<interceptor name="" class=""></interceptor>
    			<interceptor-stack name="">
    				<interceptor-ref name=""></interceptor-ref>
    			</interceptor-stack>
    		</interceptors>
    		
    		<default-interceptor-ref name=""></default-interceptor-ref>
    		
    		<global-results>
    			<result name="">/xxx.jsp</result>
    		</global-results>
    		
    		 <action name="" class="" method="" converter="">
    		 	<interceptor-ref name=""></interceptor-ref>
    		 	
    		 	<result name="" type="">/xxx.jsp</result>
    		 	
    		 	<param name="">值</param>
    		 </action>
    	</package>
    	
    	<constant name="" value=""></constant>
    </struts>
    查看全部
    2 采集 收起 来源:struts2核心文件

    2018-06-12

  • @Struts2---工作原理图

    查看全部
  • @Struts2---代码实现

    1.要导入的包:(共9个)
    commons-fileupload(上传下载包)
    commons-io(输入输出包)
    commons-lang 3-3.2(基础包)
    commons-logging(日志包)
    freemarker(模板引擎,通过模板生成文本输出的通用工具)
    structs2-core(核心包)
    xwork-core(一些类基于xwork)
    ognl(表达式)
    javassist-3.11.0.GA.jar(解析java类文件的一个包)

    2.配置web.xml文档
    web项目在启动tomcat时第一个启动的文件就是web.xml
    首先定义过滤器
    <filter>
    <filter-name>struct2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    这里写完后按住ctrl点击鼠标左键如果可以跳转则证明正确
    </filter>

    filter的映射
    <filter-mapping>
    <filter-name>struct2</filter-name>
    <url-pattern>/*</url-pattern>
    /*是所有的都需要过滤
    </filter-mapping>

    映射与文件的filter-name应该保持一致

    3.在src中创建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>

    </struts>

    4.创建action包
    创建action类让其继承ActionSupport
    Struts2中有一个默认的方法不指定方法名的话有一个execute()方法
    之后去配置struts.xml中的action文件

    5.注意点
    编译环境问题,类名问题,导包问题


    查看全部

举报

0/150
提交
取消
课程须知
小伙伴们,学习本课程前需要具备Java Web基础,熟悉JSP和Servlet。
老师告诉你能学到什么?
1、能够对Struts2框架有更深入的了解 2、能够独立编写Struts2程序

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!