培训第26天----Struts2框架初识(1)

         怎么说呢,可以说是很懒了。记得以前一天一篇,现在.........,争取以后把每天的收获都记录到博客中,下面说正题。

一.什么是MVC?

         mvc就是一种编程模式,全名是Model -View -Controller。是模型-示图-控制器   的缩写。通常模型(Model)对

象用于从数据库汇总存取数据,示图(View)通常用于将数据显示到用户界面,控制器(Controller)通常负责从用

户界面读取数据,控制用户输入,并向模型发送数据。

二.什么是Struts2框架?

         struts2框架是一种MVC框架,是一种开源的框架。所谓的框架就是一些方法的集合。它主要负责Controller部分,

用于从用户界面获取数据,并在action中获取数据用户界面传过来的值。

三.Struts2框架的应用

          1)要想使用Struts2框架的功能,那么第一步导入jar包是必不可免的。一般的jar包如下:

            2)导入jar包后,先创建一个index.jsp用于向后端传递数据,注意:jsp只有放在WebContent下,外部才能直

接访问。

            3)之后创建控制器Action,它要实现ActionSupport类,并复写其中的execut()方法。在该方法里接收数据

并进行操作。

             4)创建web.xml,用于配置项目的过滤器。通常过滤器会默认去src下找一个叫struts.xml的文件,用于将所过

滤的url进行操作,但是如果struts.xml没在src下该怎么办呢?那么就要在过滤器声明中添加一个参数。代码如下:

          5)创建struts.xml文件。这个文件默认应该放在src下,可以用来跳转页面。

<?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="" value=""></constant>     用于修改struts中默认的常量 -->
	
 	<package name="com.java.Controller" extends="struts-default" namespace="/">
		<action name="MyAction" class="com.java.Controller.MyAction">
			<result name="success" type="redirect">/index.jsp</result>
		</action>
		<action name="ActionTwo" class="com.java.Controller.ActionTwo">
			<result name="success" type="redirect">index.jsp</result>
		</action>
	</package> 
	
</struts>

                  上述代码中,有一个最外层的struts标签,里面用于配置package。下面我们来说说各种标签和属性的功能。

                   (1)package标签,方便进行模块化开发。里面的name属性一定要写,是唯一的,标记一个包。extends

属性的值一般继承struts-default ,简单来说,不继承该包,就无法使用struts2框架提供的一些核心功能。struts-default

包在struts-default.xml中有配置,在加载自己的struts.xml之前,框架就已经加载了struts-default.xml配置文件,所以我

们可以使用。namespace属性称为命名空间,一般默认为“/”,namespace和name共同构成了用户所要访问的url。

例如:

URI

               那么这个action的访问路径就应该是/user/hello.action。

               关于namespace的顺序搜索问题:

                (2)action标签,它的name属性值是用户在url中要访问的action,class属性值要是action类的路径名。可

以说name就是class类的别名,通过这个别名,就能够访问所要想访问的action。其中method方法,是action中所需

要执行的方法,默认执行execute()方法。

                 (3)result标签,其中有一个name属性,它其中的值要和action中的return 值相对应,一旦对应之后,那么

就会跳转到result标签中书写的jsp页面。这里的type=“dispatcher”是默认值,执行的是转发操作,页面跳转时,url并不

发生改变,如果页面跳转时想进行重定向,那么就改为  type="redirect"。

四.在action中获取前台页面中值的方 法

             1)属性驱动:在所需要所传的参数较少时,可以使用属性驱动,通过超链接传递参数,然后在action中定义

同名属性,通过set方法来获取从前台传递过来的参数,通过get方法来向前台传递参数。

​
package com.java.Controller;

import com.java.Bean.Dopt;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class MyAction extends ActionSupport{
	/*
	 * 前台和后台的交互有3种方式:
	 * 一.属性驱动
	 * 二.对象驱动
	 * 三.模型驱动
	 * */
   private String name;
   
   public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
@Override
   public String execute(){
	   //属性驱动
	   System.out.println(name);
	   return "success";
   }

}

​

                2)对象驱动:通过对象驱动,获取值。定义一个对象属性,生成它的get,set函数,通过emp.eid(对象.属性)

的方式来传递和过去参数。

                3)模型驱动:要想用模型驱动来传递参数,就要先实现ModelDriven<>接口,里面的泛型存放模型的类型,

要重写getModel()方法。只需要定义一个model模型,不需要定义get,set函数,就可以接收前台传进来的值。

而前台传值的时候不需要用对象.属性的方式,而是 直接用  属性=Value的形式来传递。

五.创建action所遇到的问题

            也不知道是什么问题,今天遇到一个脑袋疼的问题,写的java文件有的竟然不能加载!!!!!!!!!!!

java文件在 工作区间 中的src中存在,但是build文件中却没有一些class文件,相应的,在tomcat服务器中也没有相应

java的.class文件,也就出现了,在启动服务器的时候,会出现类找不到的情况。虽然不知道什么原因,但是我们可以

在eclipse上进行重新编译,并且经过两次clear操作清除项目在 工作区间 和 tomcat中的缓存,之后在部署的方式可以

将为被编译的java文件进行重新编译。如下:

             这个问题也帮助我理解java文件在 工作区间 和 tomcat 中的位置了。

猜你喜欢

转载自blog.csdn.net/qq_41160264/article/details/81513942