十四、MVC的WEB框架(Structs2)

一、Structs2中的Session

1、一个是传统的servlet包下的HttpSession,一个是Structs2中自己定义的Session

Servlet下的Session获取方法:ServletActionContext.getRequest().getSession(),需要servlet-api.jar包

2、Structs中的Session获取方法:Map m=ActionContext.getContext().getSession(),session以Map类的形式,其中值和HttpSession中的值是同步的。

package com.demo.action;

import java.util.Map;

import com.demo.Model.Product;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ProductAction extends ActionSupport {
    private Product product;

    public String show() {
        product = new Product();
        product.setName("iphone7");
        return "show";
    }

    public String add() {
    //通过session把name放进去
        Map m = ActionContext.getContext().getSession();
        m.put("name", product.getName());
        return "show";
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }
}

3、在show.jsp中通过EL表达式把session中的数据取出来

<%@page isELIgnored="false"%>
 
${product.name}
 
${name}<!--EL表达式可以直接从session中数据取出来-->

二、文件上传

1、准备upload.jsp

上传文件一定要为form表单加上enctype="multipart/form-data",表示提交的数据是二进制的,并且必须是method="post"

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8" isELIgnored="false"%>
 
<%@page isELIgnored="false" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
 
<html>
<body>

<form action="upload" method="post" enctype="multipart/form-data">

  上传文件 : <input type="file" name="doc" /> <br> 

    <!--使用structs的s:file标签表示上传文件框,name使用doc会和服务端的相应的代码匹配-->
    上传文件2:<s:file name="doc" label="upload"/>
  <input type="submit" value="上传">
</form>

</body>
</html>
2、准备UploadAction

由于在upload.jsp中file字段对应的name是doc,在Action中,必须准备三个属性:File doc;   String docFileName;  String docContentType;属性名字不能使用其他的,只能基于doc

package com.demo.action;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.structs2.ServletActionContext;

public class UploadAction{
    File doc;
    String docFileName;
    String docContentType;
    
    //属性的getter/setter方法
    public File getDoc(){
        return doc;
    }
    public void setDoc(File doc){
        this.doc=doc;
    }
    public String getDocFileName(){
        return docFileName;
    }
    public void setDocFileName(String docFileName){
        this.docFileName=docFileName;
    }
    public String getDocContentType(){
        return docContentType;
    }
    public void setDocContentType(String docContentType){
        this.docContentType=docContentType;
    }
    
    public String upload(){
        System.out.println(doc);
        System.out.println(docFileName);
        System.out.println(docContentType);
        return "success";
    }
}
View Code
3、配置structs.xml

为upload路径配置UploadAction,并返回success.jsp

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <package name="basicstruts" extends="struts-default">
  <action name="showProduct" class="com.demo.action.ProductAction" method="show">
    <result name="show">show.jsp</result>
  </action>    
  <action name="addProduct" class="com.demo.action.ProductAction" method="add">
    <result name="input">addProduct.jsp</result>
    <result name="show">show.jsp</result>
  </action>  
  <!--上传文件-->  
  <action name="upload" class="com.demo.action.UploadAction" method="upload">
    <result name="success">success.jsp</result>
  </action>    
</package>
4、准备success.jsp

显示doc,docFileName,docContentType

<%@page isElIgnored="false"%>
uploaded success
${doc}
<br/>
${docFileName}
<br/>
${docContentType}

 

转载于:https://www.cnblogs.com/drq1/p/8568889.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值