首页 > 编程知识 正文

struts2还有人用吗(struts框架概念)

时间:2023-05-05 13:48:40 阅读:69496 作者:557

前言:上次我和大家分享了SSH框架的Maven。 今天我和大家分享SSH框架的Struts。 其中Struts与自古以来与大家共享的自定义MVC非常相似,但也有不同之处。 接下来我会和大家分享自己学到的知识一、明确的目标。 1、Struts结构

2、struts的动态调用方法

3、struts传播的三种方式

4、struts与tomcat的整合(合作) ) )。

二、struts配置1、步骤:(与自定义mvc比较) ) ) ) ) ) ) ) ) ) )。

1、建立依赖关系---导入jar包(mvc手动导入jar包,但struts只需在Maven的pom.xml文件中直接写入相关代码) ) ) )。

创建新的struts项目后,与Maven一样,首先将web版本更改为3.1

然后将java版本从2.3更改为3.1,并将Dymanic版本从1.5更改为1.8。 (在此稍加修改,然后完成版本更改后,填写webapp时写绝对路径的是src/main/webapp,而不是直接写webapp。 )

然后更改jdk的版本。 上次和大家分享的是手动改造。 今天和大家分享代码改造,把以下代码复制到maven的pom.xml文件中就可以了。 当然,在复制之前,请先写plugins/plugins,然后在其间写代码。

pluginsplugingroupidorg.Apache.maven.plugins/groupidartifactidmaven-compiler-plugin/artifactidversion3.7/0

最后,是struts和Tomcat的集成。 必须将以下代码写在dependencies/dependencies中,写完之后耐心等待。 (此时,正在下载所需的jar包。 )

dpendenciesdependencygroupidjavax.servlet/groupidartifactidjavax.servlet-API/artifactidversion4.0.1/version scret ependencydependencygroupidorg.Apache.struts/groupidartifactidstruts2- core/artifactidversion2.5. 13 /

web.xml: (其中,对于filter-class/filter-class中的类名,请单击ctrl shfit t以搜索StrutsPrepareAndExecuteFilter,然后单击该类的完整路径名

filter filter-name struts/filter-name filter-class org.Apache.struts2. dispatcher.filter.strutsprepareandexecutefefecter 过滤器- name URL-pattern *.action/URL-pattern/filter-mapping

3、开发:struts和自定义mvc一样的都要写好子控制器继承Actionsupport

 三、struts的动态调用方法

          与自定义mvc的方法相比,struts的动态调用方法更加灵活;struts的配置文件有三个(三个配置文件相同于自定义mvc的配置文件,三个配置文件相辅相成),自定义mvc的配置文件只有一个(web.xml)

1、配置文件(最主要的配置文件struts-sy.xml):

struts是调用的动态方法,理所当然写法与自定义mvc的写法不一样,如下图所示,在action中的name属性中,写法是/demo1_*,但是在自定义mvc中是直接写/demo1,class表示要进入的类。

第二大不同:

在struts-sy.xml中出现result节点,表示最后进入的结果界面。

第三大不同:

图中还出现了method属性,{1}表示取访问路径的第一个方法,改1是对应 /demo1_*后面的*

注意:有一个*,自然而然的想到了有两个*的写法/demo1_*_*,其中第一个*同样表示方法,第二个方法就表示要跳转的结果界面了

有两个*的写法:

2、子控制器类:对应的方法

public String add() throws Exception {System.out.println("add方法");return "bookEdit";}public String del() throws Exception {System.out.println("del方法");return "bookEdit";}public String edit() throws Exception {System.out.println("edit方法");return "bookEdit";}

3、bookEdit界面: 

4、实现类Demo1.jsp:

<h3>struts方法调用 </h3> <a rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_add.action">新增</a><br><a rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_del.action">删除</a><br><a rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_edit.action">修改</a><br>

5.运行结果:

运行成功: 

 

四、struts的传参的三种方式:

        三种方式:

                       1、Modeldriven传参

                       2、set方式传参:

                       3、根据对象属性传参:

1、Modeldriven传参:在子控制类写好实现modeldriven类的代码:

实体类:

package com.zking.one.entity;public class User {private String uid;private String uname;public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public User() {// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "User [uid=" + uid + ", uname=" + uname + "]";}public User(String uid, String uname) {super();this.uid = uid;this.uname = uname;}}

demo1.jsp:

<h3>struts传参方式 </h3> <a rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_list.action?uid=001&&uname=zs">Modeldriven传参</a><br><a rel="external nofollow" rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_list.action?sex=nv">通过set方法传参</a><br><a rel="external nofollow" rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_list.action?user2.uid=002&&user2.uname=ls">通过对象属性</a><br>

Demo1Action:

public String list() throws Exception {System.out.println("list方法");System.out.println(user1);

 运行效果:

 2、set方式传参:User中没有sex这个属性,那么就独自在action中写一个sex,生成get和set方法

Demo1Action:

demo1:

<a rel="external nofollow" rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_list.action?sex=nv">通过set方法传参</a><br>

 运行效果:

3、根据对象属性传参:同时在Demo1Action中定义一个user叫做user2并且写好user1和user2的get和set方法,但是并没有new,同时也能够运行出效果:

Demo1Action:

demo1:

<a rel="external nofollow" rel="external nofollow" href="${pageContext.request.contextPath }/sy/demo1_list.action?user2.uid=002&&user2.uname=ls">通过对象属性</a><br>

运行结果:

五:struts与tomcat的集成(合作)今天写struts项目的目的就是要进行测试:

        1、两种方式:

                            1、直接定义ServletActionContext.getRequest()进行集成

                            2、在Demo1Action类中实现ServletRequestAware ,ServletResponseAware两个接口进行集成。

        2、直接定义ServletActionContext.getRequest()进行集成:

Demo1Action:

HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("age", 20);

bookEdit.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>Insert title here</title></head><body>成功界面。。。。${ age }

运行结果:

        3、在Demo1Action类中实现ServletRequestAware ,ServletResponseAware两个接口进行集成:

在Demo1Action:

public String list() throws Exception {System.out.println("list方法");System.out.println(user1);System.out.println(sex);System.out.println(user2);HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("age", 20);req.setAttribute("name", "sjx");return "bookEdit";}

并且重写setServletRequest和setServletResponse方法:

运行结果:

运行成功:

 总结:struts框架和自定义MVC相比起来,struts框架用起来更加方便,在今天分享的   知识中,第二点struts的动态调用方法更加的新颖,其中struts框架的传参方式比自定义MVC更加丰富,自此可见struts框架的强大之处。今天的知识就分享到这里了。希望对大家有帮助,有疏忽之处还请大神多加指点!​​​​​​​

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。