一,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>

struts常用知识的更多相关文章

  1. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  2. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  3. AngularJS进阶(十二)AngularJS常用知识汇总(不断更新中....)

    AngularJS常用知识汇总(不断更新中....) 注:请点击此处进行充电! app.controller('editCtrl',['$http','$location','$rootScope', ...

  4. 打造自己的Android常用知识体系

    前言 Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理.注意哦,不是Android知识体系. 古语道:学而不思则罔,思而不学则殆.如果将做项目类比为“ ...

  5. jQuery常用知识总结

    jQuery常用知识总结 简介 选择器 属性操作 jQuery() each event事件 jQuery扩展 一.简介 What is jQuery jQuery is fast small and ...

  6. Python数据分析与挖掘所需的Pandas常用知识

    Python数据分析与挖掘所需的Pandas常用知识 前言Pandas基于两种数据类型:series与dataframe.一个series是一个一维的数据类型,其中每一个元素都有一个标签.series ...

  7. Oracle常用知识小总结

    永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! Oracle常用知识小总结 1. 创建自增主键 对于习惯了SQL SERVER的图形化界面操作的SQLer,很长一段时间不用oracle ...

  8. php常用知识集锦

    php常用知识集锦 很多位置都有写好的代码,自己做项目的时候可以直接拿来用,而不用自己写,比如现在看到的菜鸟教程. 1.判断是否为空 empty($_POST["name"]) 2 ...

  9. javascript常用知识汇总

    javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会.从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记. 1.禁止手机虚拟键盘弹出 在开发适配手机的页面时,出现了这 ...

随机推荐

  1. ios 性能优化概述

    在开发IOS程序的时候,不止是简简单单的把代码堆砌起来,或者说有一个比较好的架构,程序就ok的.还需要在程序性能上进行优化.所谓优化,并非只是简单的优化几个算法,让程序看起来跑的更快.优化是有目标的, ...

  2. BeautifulSoup使用注意事项

    BeautifulSoup使用注意事项 BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beau ...

  3. 【OpenCV新手教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.    文章链接: http://blog.csdn.net/poem_qianmo/article/details/28261997 作者:毛星云( ...

  4. 2016424王启元 Exp6信息搜集与漏洞扫描

    一.原理与实践说明 1.实践内容 本实践的目标是掌握信息搜集的最基础技能.具体有: 1.各种搜索技巧的应用 2.DNS IP注册信息的查询 3.基本的扫描技术:主机发现.端口扫描.OS及服务版本探测. ...

  5. Inno Setup 安装

    Inno Setup 安装 一.软件下载:http://www.jrsoftware.org/isdl.php#qsp 二.下载后,双击进行安装(包括inno Setup Compiler和Inno ...

  6. java反射机制执行命令

    public class Encryptor{ public static void main(String[] args) throws IOException, ClassNotFoundExce ...

  7. 跨路径读取cookie

    同域下,即使设置了cookie的路径还是能将不同路径cookie读出来. 1.在/ctf/day3/ 目录设置一个cookie 2.其他目录下是不能访问这个cookie的 3.通过iframe可以实现 ...

  8. LeetCode刷题(数据库)---- 交换工资

    题:给定一个工资表,如下所示,m=男性 和 f=女性 .交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然).要求使用一个更新查询,并且没有中间临时表. 例如: | id | nam ...

  9. 生成Html 测试报告

    1.引入HTMLTestRunner 下载HTMLTestRunner.py 从http://tungwaiyip.info/software/HTMLTestRunner.html 将下载的HTML ...

  10. Notes 20180509 : Java基本数据类型

    计算机就是个机器,这个机器由CPU.内存.硬盘和输入输出设备组成.计算机上运行着操作系统,操作系统提供对外的接口供各厂商和开发语言,开发运行在其上的驱动和应用程序. 操作系统将时间分成细小的时间碎片, ...