struts常用知识

一,struts2是什么?

  struts2是一个控制框架,相当于连接底层和显示层,控制页面和数据展示

二,为什么用struts2?

  jsp+javabean模式:jsp里的小脚本java代码太多,页面杂乱  

  jsp+servlet+javabean模式:servlet和jspAPI强耦合,代码复用率低

  jsp+struts2+javabean模式: 把servlet进行了封装,使用拦截器拦截请求,使用结果视图进行响应

三,struts2怎么用?

  1.导入框架所需的包,软件默认在web-info下添加全局过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <display-name></display-name>    

  <!-- 首页配置 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- struts配置 -->
  <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>

  2.编写action类,【继承ActionSupport】

package com.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.io.IOUtils;
import org.apache.struts2.ServletActionContext;

import com.bean.User;
import com.dao.IUserDao;
import com.dao.impl.UserDaoImpl;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends ActionSupport implements ModelDriven<User>{

    //文件上传
    private File file;
    private String fileContentType;
    private String fileFileName;

    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }
    public String getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }
    public String getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }

    //数据接收
    private User u;

    public User getU() {
        return u;
    }
    public void setU(User u) {
        this.u = u;
    }
    @Override
    public User getModel() {
        if(this.u==null){
            this.u=new User();
        }
        return this.u;
    }

    public String add(){

        //保存文件
        String path = ServletActionContext.getServletContext().getRealPath("/upload/");
        File dir=new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }
        try {
            FileInputStream input=new FileInputStream(file);
            FileOutputStream output=new FileOutputStream(path+"/"+fileFileName);
            IOUtils.copy(input, output);
            input.close();
            output.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //调用数据接口,添加数据库
        IUserDao iud = new UserDaoImpl();
        this.u.setPhoto(fileFileName);
        Integer result = iud.addUser(u);
        if(result>-1){
            System.out.println("添加成功!");
        }else{
            System.out.println("添加失败!");
        }

        return SUCCESS;
    }

}

  3.在struts.xml中注册action和相应的结果视图

<?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>
    <!-- 设置上传文件大小 -->
    <constant name="struts.multipart.maxSize" value="10000000"></constant>

    <package name="test" namespace="/" extends="struts-default">

        <action name="*_*" class="com.action.{1}Action" method="{2}">
            <!-- 拦截器指定文件大小 -->
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">10000000</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"/>

            <result name="success">success.jsp</result>
        </action>

        <!-- 文件上传测试 -->
        <action name="Uplod" class="com.action.UploadAction">
            <!-- 拦截器指定文件大小 -->
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">10000000</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"/>

            <result name="success">success.jsp</result>
        </action>

    </package>

</struts>    
时间: 2025-01-13 04:31:58

struts常用知识的相关文章

Linux运维常用知识(4)

linux命令无效-bash: ls: command not found 一次重启后开机,基本所有的命令都不可用,只有少数的命令可用 [[email protected] ~]# ll -bash: ls: command not found [[email protected] ~]# pwd /root [[email protected] ~]# shutdown -r now -bash: shutdown: command not found [[email protected] ~

HTML5常用知识

今日做项目,涉及到native和H5页面的交互 1.document.readyState document.readyState:判断文档是否加载完成.firefox不支持. 这个属性是只读的,传回值有以下的可能: 0-UNINITIALIZED:XML 对象被产生,但没有任何文件被加载. 1-LOADING:加载程序进行中,但文件尚未开始解析. 2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效. 3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有

struts 常用的标签

## struts 常用的标签 * 1.<include>利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml使用<include>标签引入其他配置文件 ex: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//D

从零单排入门机器学习:Octave/matlab的常用知识之矩阵和向量

Octave/matlab的常用知识之矩阵和向量 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了.这次打算以该课程的作业为主线,对机器学习基本知识做一下总结.小弟才学疏浅,如有错误,敬请指导. Andrew的课程选了Octave/matlab为编程语言.他选择这个估计更多是考虑大众性,这门语言容易入门. 然后我觉得学会使用Octave/matlab还是挺有用的.一来是她天生是个数学工具,开始的研究阶段使用她最方便莫属,注意我这里所说的是研究阶段,商用

从零单排入门机器学习:OctaveMatlab的常用知识之画图

OctaveMatlab的常用知识之画图 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了.这次打算以该课程的作业为主线,对机器学习基本知识做一下总结.小弟才学疏浅,如有错误,敬请指导. 看几个例子即可. 'ro'的含义,r表示红色,o表示o形. 可以记住某些常用的选项. 一条命令画两条线.其实可以多条. 一般来说,用户在新输入plot 命令之后,原图片上的内容将被删除.如果你想保存当前的图片内容并将新创建的图片层叠到原图片上,你可以通过使用hold

Struts常用标签库(章节摘要)

1,Struts为了方便用户的开发,提供了专门的标签库,常用的标签库是Bean,Logic和html. 2,Bean标签库可以进行JavaBean或者是资源的操作. 3,Logic标签主要完成的是判断,比较等功能的实现. 4,Html标签库中定义了许多与显示有关的标签,但是这些标签要运行则依赖于ActionForm.Struts常用标签库(章节摘要)

MYSQL数据库常用知识整理

Evernote Export MYSQL数据库常用知识整理 什么是MYSQL MYSQL的特性 MYSQL存储引擎的分类以及数据文件的介绍 MYSQL赋权 MYSQL备份与恢复 MYSQL的基本操作:增删查改 MYSQL的基本故障判断与处理 MYSQL的调优 MYSQL主主.主从复制的实现 MYSQL大数据备份和恢复 数据文件的损坏与修复 什么是MYSQL MySQL 是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中

struts基础知识

1.框架 (1).是一系列jar包,其本质是对JDK功能的拓展. (2).框架是一组程序的集合,包含了一系列的最佳实践,作用是解决某一个领域的问题. 2.框架的作用:       框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量.与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用 3.框架和设计模式的区别 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式.实际上它们完全是不同的概念. (1).  框架.设计

iOS Dev (26) 初步了解下UIColor的最常用知识

作者:CSDN 大锐哥 地址:http://blog.csdn.net/prevention - 内置的颜色有啥? // Some convenience methods to create colors. These colors will be as calibrated as possible. // These colors are cached. + (UIColor *)blackColor; // 0.0 white + (UIColor *)darkGrayColor; // 0