一、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";
}
}

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}

十四、MVC的WEB框架(Structs2)的更多相关文章

  1. 二十、MVC的WEB框架(Spring MVC)

    一.Spring MVC 运行原理:客户端请求提交到DispatcherServlet,由DispatcherServlet控制器查询HandlerMapping,找到并分发到指定的Controlle ...

  2. 十三、MVC的WEB框架(Structs2)

    一.Structs2的应用 Structs2是基于MVC的WEB框架.一般基于框架的程序要运行成功,对于JAR包的版本,配置文件的正确性有着苛刻的要求,一个地方错了,都会导致框架程序运行出错. 1.首 ...

  3. 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

    第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...

  4. 第三百二十四节,web爬虫,scrapy模块介绍与使用

    第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...

  5. 第三百一十四节,Django框架,自定义分页

    第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...

  6. Python开发【第十八篇】Web框架之Django【基础篇】

    一.简介 Python下有许多款不同的 Web 框架,Django 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于 Django. Django 是一个开放源代码的Web应用框架,由 P ...

  7. 第四篇:Web框架 - Django

    前言 Django是一个开放源代码的Web应用框架,由Python写成.它和J2EE一样,采用了MVC的软件设计模式,即模型M,视图V和控制器C. 本文将讲解DJango框架,并从实际应用的角度讲解一 ...

  8. Python之路【第十八章】:Web框架

    Web框架本质 1.众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 #!/usr/bin/env python # -*- codin ...

  9. Python之路【第十五篇】WEB框架

    WEB框架本质 Python的WEB框架分为两类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理请求 ...

  10. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

随机推荐

  1. BZOJ 3673: 可持久化并查集(可持久化并查集+启发式合并)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3673 题意: 思路: 可持久化数组可以用可持久化线段树来实现,并查集的查询操作和原来的一般并查集操作 ...

  2. 1st,Python基础——01

    1 Python介绍 2 Python发展史 3 Python2 or 3? 4 Python安装 就不写了,各路大牛的博客都很详细. 5 Hello World程序 #!/usr/bin/env p ...

  3. 微信小游戏开发之JS面向对象

    //游戏开发之面向对象 //在js的开发模式中有两种模式:函数式+面向对象 //1.es5 // 拓展一:函数的申明和表达式之间的区别 // 函数的申明: // function funA(){ // ...

  4. CSS3动画详解(结合实例)

    一.使用CSS3动画代替JS动画 JS动画频繁操作DOM导致效率非常低 在频繁的操作DOM和CSS时,浏览器会不停的执行重排(reflow)和重绘(repaint) 可以避免占用JS主线程 这边就不细 ...

  5. Jquery中的DOM操作:

    DOM是 Document Object Model的缩写,是一种与浏览器,平台,语言无关的接口,使用该接口可以访问页面中所有的标准组件,下面介绍一下常用的一些DOM操作: 选择节点: 将在下篇博客中 ...

  6. 数据库无法打开到SQL Server连接

    今天打开数据库,发现连接不上,弹出错误提示: 打开SQLServer Configuration Manager,发现SQL Server状态已经停止,双击启动弹出错误提示: 打开SQL Server ...

  7. 《Linux命令行与shell脚本编程大全》读书笔记

    第一章:初识Linux 1.linux可划分为四个部分:内核.GNU工具.图形化桌面环境.应用程序 2.内核主要负责:系统内存管理.软件程序管理.硬件设备管理.文件系统管理 3.内核的系统内存管理,有 ...

  8. ip啊

    网络模型被OSI分成七层,TCP/IP协议大致对应了2.3.4.7层,分别是数据链路层.网络层.传输层.应用层,IP协议处于网络层上,它的工作原理说白了并不复杂: 整个互联网上所有的机器都有唯一一个I ...

  9. TypeError: add() argument after * must be an iterable, not Settings的错误原因

    在抄代码的时候发现有个错误: TypeError: add() argument after * must be an iterable, not Settings 看不懂,百度才知道原因,原来是第2 ...

  10. leecode第二十题(有效的括号)

    class Solution { public: bool isValid(string s) { ,end=s.size()-; )//万万没想到,他把空字符串当成true了 return true ...