struts de mvc 结构理解

本文介绍Struts框架的设计原理与实现细节,包括ActionForm的作用、Action的执行流程及配置文件struts-config.xml的设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结下:设计struts框架,首先设计客户请求的jsp,晓得他的业务需求。然后将jsp的一些交互数据封装到ActionForm中。通过业务逻辑需求设计相应的完成此业务功能的Action,Action中将直接使用ActionForm的数据而不需要request和response,同时在完成逻辑处理后调用相应的jsp页面返回给用户。与简单servlet的不同是,将框架标准化了。

 

 

 前面学习了简单的基于servlet的mvc框架模型,现在在那个的基础上乘胜追击,看了在此基础上扩展的struts框架。 

struts:mvc

    c:接收客户端请求,执行相应业务逻辑,把响应送回到客户端。由ActionServlet,Actionmapping对象构成。

xml文件:

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
     
  <servlet-mapping>   
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>

    所有的以.do为扩展名的文件都由action映射到对应的servlet执行

 

struts-config文件:

 

 

<form-beans >
    <form-bean name="addvideoForm" type="com.struts.form.AddvideoForm" />

  </form-beans>

 

<action-mappings >
       

 <action
      attribute="addvideoForm"
      input="/addVideo.jsp"
      name="addvideoForm"    与此action相对应的form
      path="/addvideo"             用户访问addvideo.do,此请求被转发到type(com.struts.action.AddvideoAction)处理
      scope="request"              ActionForm的作用范围是request
      type="com.struts.action.AddvideoAction" />       处理此请求的action 

 <forward name="tianen" path="/tianen.jsp">          action处理完后可以转发的选项

</action-mappings>

 

m:Action 和Actionform

    不在需要request和response,action中 直接调用Actionform获取表单数据

v:jsp与自定义标记

 

实例:

1.Actionform

package com.struts.form;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;


public class AddvideoForm extends ActionForm {
 
 public ActionErrors validate(ActionMapping mapping,
   HttpServletRequest request) {
  
  return null;
 }

 
 public void reset(ActionMapping mapping, HttpServletRequest request) {
  // TODO Auto-generated method stub
    try {
   request.setCharacterEncoding("utf-8");
  } catch (UnsupportedEncodingException e) {
   
   e.printStackTrace();
  }
 }
 private String videoshowName;
    private String videoInfo;
 public String getVideoshowName() {
  return videoshowName;
 }

 public void setVideoshowName(String videoshowName) {
  this.videoshowName = videoshowName;
 }

 public String getVideoInfo() {
  return videoInfo;
 }

 public void setVideoInfo(String videoInfo) {
  this.videoInfo = videoInfo;
 }
 private int videoSize;
 private int videoBackup;
 private FormFile image;
 public FormFile getImage() {
  return image;
 }

 public void setImage(FormFile image) {
  this.image = image;
 }

 

 public int getVideoSize() {
  return videoSize;
 }

 public void setVideoSize(int videoSize) {
  this.videoSize = videoSize;
 }

 public int getVideoBackup() {
  return videoBackup;
 }

 public void setVideoBackup(int videoBackup) {
  this.videoBackup = videoBackup;
 }
}

 

2.Action:


package com.struts.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import com.struts.form.AddvideoForm;
import com.video.Manager;
import com.video.TestDAO;


public class AddvideoAction extends Action {
  public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  AddvideoForm addvideoForm = (AddvideoForm) form;

 
        FormFile file = addvideoForm.getImage();
        if (file == null){
         
        }
        String videoName = file.getFileName();// 获取文件名
        int videoSize = file.getFileSize()/1024;// 获取文件大小
       
        String ext = videoName.substring(videoName.lastIndexOf(".") + 1, videoName.length());
        // 获取文件类型,即扩展名,通过String类的substring方法截取字符串,lastIndexOf获取某个字符串最后出现的索引。
        ext = ext.toLowerCase();// 全部转换成小写。
                       
        }
      
  TestDAO test=new TestDAO();
  Manager manager=new Manager();
  
  String videoshowName=addvideoForm.getVideoshowName();
  String videoInfo=addvideoForm.getVideoInfo();
  int videoBackup=addvideoForm.getVideoBackup();
  FormFile image=addvideoForm.getImage();
  List list=manager.findNode(videoName, 1, videoSize);
  String path=(String)list.get(0);
  manager.addvideo(image, path,videoName);
  String sql="insert into t_video(videoName,videoSize,videoBackup,showvideoName,videoInfo) " +
    "values('"+videoName+"','"+videoSize+"','"+videoBackup+"','"+videoshowName+"','"+videoInfo+"')";
         test.updateSql(sql);
  
  //return null;

  return (mapping.findForword("tianen"));
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值