2011级-csdn-java-张侃—struts2文件上传错误信息国际化的处理(案例)_zktalk的博客-程序员秘密

技术标签: 感受  心得  

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>

	<body>
		<form
			action="${pageContext.request.contextPath}/csdn/UploadAction_upload.action"
			method="post" enctype="multipart/form-data">
			上传文件:
			<input type="file" name="upload">
			<br />
			<input type="submit" value="上传" />
		</form>
		错误信息:
		<br />
		<s:fielderror></s:fielderror>
	</body>
</html>


web.xml

<?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">
	
	<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>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


struts.xml

<?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>
   <!-- 常量的配置 -->
   <include file="struts-constant.xml"/>
   
   
   
    <package name="user" namespace="/csdn" extends="struts-default">
     
        <global-results>
           <result name="input">/index.jsp</result>
        </global-results>
    
       <action name="UploadAction_*" class="www.csdn.international_upload.action.UploadAction" method="{1}">
            <interceptor-ref name="fileUpload">
                <!-- 设置文件上传的类型:Tomcat/conf/web.xml文件 就有文件的类型的名称 -->
                <param name="allowedTypes">image/jpeg,image/pjpeg,application/octet-stream,application/x-zip-compressed</param>
                <param name="maximumSize">5242880</param>
            </interceptor-ref>
              <!-- 默认的拦截器栈 -->
            <interceptor-ref name="defaultStack"/>
            <result name="success">/index.jsp</result>
       </action>
    </package>

</struts>


struts-constant.xml

<?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>
   <!-- 常量的配置 -->
   <!-- struts2的后缀 -->
   <constant name="struts.action.extension" value="action"/>
   <!-- 编码方式 -->
   <constant name="struts.i18n.encoding" value="UTF-8"/>
   <!-- 浏览器静态缓存最好处于关闭状态 -->
   <constant name="struts.serve.static.browserCache" value="false"/>
   <!-- struts.xml文件当被修改后 重新加载,开发阶段最好打开 -->
   <constant name="struts.configuration.xml.reload" value="true"/>  
   <!-- 处于开发阶段 最好把开发模式打开 会打印更多的详细错误信息 -->
   <constant name="struts.devMode" value="true"/>
   
   <!-- 设置临时保存的路径 -->
   <constant name="struts.multipart.saveDir" value="c:\\day\\"/>
   <!-- 设置文件上传的大小 ,这个值必须大于等于拦截器中的值 -->
   <constant name="struts.multipart.maxSize" value="5242880"/>
   
     <!-- 国际化资源文件的基本名称 -->
   <constant name="struts.custom.i18n.resources" value="csdn"/>
   

</struts>


UploadAction.java

package www.csdn.international_upload.action;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletContext;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.FileUploadInterceptor;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {

	private File file;

	private String contentType;

	private String filename; 

	

	public void setUpload(File file) {
		this.file = file;
	}

	public void setUploadContentType(String contentType) {
		this.contentType = contentType;
	}

	public void setUploadFileName(String filename) {
		this.filename = filename;
	}

	public String upload() {
		
		String path = ServletActionContext.getServletContext().getRealPath(
				"WEB-INF/uploads");
		
	
		File pfile = new File(path);
		
		if (!pfile.exists()) {
			pfile.mkdirs();
		}

		try {
			FileUtils.copyFile(file, new File(pfile, System.currentTimeMillis()
					+ "_" + filename));
			return SUCCESS;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return INPUT;
	}

}

两个配置文件:

 


 

 

运行结果界面:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangkan111/article/details/8647947

智能推荐

Java实现 LeetCode 404 左叶子之和_普通网友的博客-程序员秘密

404. 左叶子之和计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24/** * Definition for a binary tree node. * public class TreeNode { * int val; * T...

Java中正确的中止线程_线程中止_Mynah886的博客-程序员秘密

说说如何中止一个正在运行的线程?一、不正确的线程终止 - Stop中止线程,并且清楚监控锁的信息,但是可能导致线程安全问题,JDK不建议用。public class Demo3 { public static void main(String[] args) throws InterruptedException { StopMyThread thread = new Sto...

arduino教程- 14.制作光电子琴与MIDI电子鼓_arduino midi_蔚蓝慕的博客-程序员秘密

发声体和声音扬声器(speaker)和蜂鸣器(piezo transducer)piezoelectric(压电感应)音频:振动的频率音高(pitch):声音的频率(音频)高低tone()指令:tone(输出端口, 频率, 持续时间);或 tone(输出端口, 频率),若不指定时间,Arduino将持续发声,直到执行noTone()为止。动手做 13-1 演奏一段马里奥旋律程序代...

Centos7下监控磁盘使用量超过阈值自动发送报警邮件_安果缘的博客-程序员秘密

Centos7下监控磁盘使用量超过阈值自动发送报警邮件前言一、下载安装sendEmail工具二、编写disk_check.sh文件三、运行disk_check.sh四、加入定时任务前言前段时间公司有台Centos7的服务器因为磁盘满了,导致服务不可以,今天有空特来总结一下,如何监控centos系统磁盘,设置阈值,定时检测,自动发送邮件报警。一、下载安装sendEmail工具cd /opt #安装到opt目录下wget http://c aspian.dotconf.net/menu/Softwa

《编程那些事儿》第1章 这个程序员很酷_道知极限编程的博客-程序员秘密

王刑天是个很酷的程序员,他总是带着耳机,无论是上班路上,还是办公室,感觉世界就是他一个人的存在。公交车上刑天带着耳机闭上眼睛,脑海里浮现的竟然是一行一行的代码,并非在欣赏音乐。音乐对于他来说主要作用不是悦耳,或动听,而是噪音。但是这种噪音对于程序员来说的非常好的静心神曲,无论是优美的、JD的、轻音乐的、还是哀怨的、还是歌颂爱情的,都是可以接受的,只要可以隔绝外部真正的噪音,就行了。一天,公交车上两个长的还可以的妹子正在聊办公室里的八卦,其中一个妹子A说“你知道那个每天鸡窝头的男同事叫什么名字吗?感..

算法设计--众数和重数问题(分治法)_给定含有n个元素的多重集合s,用分治法设计并实现在多重集合中找众数及其重数_聪聪不匆匆的博客-程序员秘密

问题描述: 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的n个自然数组成的多重集S,计算S的众数及其重数 。问题分析: 1、 分治法 分治法解题过程主要分为分、治、合三个步骤“,应用该方法的基本过程如下: (1) 将原问题分解为若干个规模较小的子问题

随便推点

arm-linux 内存管理之一级页表及二级页表_arm两级页表___pop_的博客-程序员秘密

arm32 一个 vma 中 有 两个 index // armv6 RM ref P730 L1(一级页表,即页目录表)index 为 12位,所以一级页表的大小为 2^12*4B=16KB L2(二级页表,页表)index为8位,所以二级页表的大小为2^8*4B=1KB // 所以一套(一级和二级)页表的"最大"大小为 // 16KB + 16KB/4B * 1KB = 4MB + 16KB // 一级页表大小 + 所有的 二级页表大小arm32 硬件上 有 TTBR0 TTBR1

15个经典面试问题及回答思路,已拿offer_Android女王的博客-程序员秘密

开头经常会有人问:“现在学习Android开发还有前景?”我的看法是现在只是市场趋于平稳了,对开发人员的要求越来越好了,这并不代表没有前景了。移动开发不等于App开发,所有新的技术浪潮其实都可以融入到移动开发的体系里,比如IOT、音视频、边缘计算、VR/AR,我们要做的,只是打好基础,随时准备战斗。其次,从心态上,我觉得我们千万不要把时间浪费在纠结问题上,而是应该放在解决问题上。“王者荣耀”“吃鸡”并不能解决我们的焦虑,拥抱变化,才能拥有未来,让我们共勉。移动端的招聘中高端的职位还是很多的,看了下拉勾

[Android] ImageView.ScaleType设置图解_every2003的博客-程序员秘密

ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。设置的方式包括:1. 在layout xml中定义android:scaleType="CENTER"2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);接下来,将对Scal

python岗位数据分析报告_python相关岗位招聘数据分析报告_想考个研的博客-程序员秘密

python岗位数据分析报告数据集为针对智联,boss,拉勾三个招聘网站的爬取,爬取关键字段:语言为python,java,c;城市为 北上广深郑杭;数据分类保存在 ‘’python招聘数据.xlsx‘’ 表格中研究问题 :一. python相关岗位(数据分析,数据挖掘,开发工程师)地区(北京地区内)分布(1) 数据处理# 导入模块import pandas as pd# 读取数据full_data = pd.read_excel('python招聘数据.xlsx',sheet_name

Flink实战(七十五):flink-sql使用(三)简介(三)配置_王知无(import_bigdata)的博客-程序员秘密

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 配置SQL 客户端启动时可以添加 CLI 选项,具体如下。./bin/sql-client.sh embedded --helpMode "embedded" submits Flink jobs from the local machine. Syntax: embedded [OPTIONS] "embedded" mode options: -

搭建SSM架构的Maven项目_静诚悟道的博客-程序员秘密

搭建SpringMvc+Spring+MyBatis,下面俩个地址是 详细处理:http://blog.csdn.net/cool_easy/article/details/42963573 http://blog.csdn.net/Michael_HM/article/details/52542710?locationNum=3

推荐文章

热门文章

相关标签