十四、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";
}
}
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)的更多相关文章
- 二十、MVC的WEB框架(Spring MVC)
一.Spring MVC 运行原理:客户端请求提交到DispatcherServlet,由DispatcherServlet控制器查询HandlerMapping,找到并分发到指定的Controlle ...
- 十三、MVC的WEB框架(Structs2)
一.Structs2的应用 Structs2是基于MVC的WEB框架.一般基于框架的程序要运行成功,对于JAR包的版本,配置文件的正确性有着苛刻的要求,一个地方错了,都会导致框架程序运行出错. 1.首 ...
- 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息
第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...
- 第三百二十四节,web爬虫,scrapy模块介绍与使用
第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...
- 第三百一十四节,Django框架,自定义分页
第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...
- Python开发【第十八篇】Web框架之Django【基础篇】
一.简介 Python下有许多款不同的 Web 框架,Django 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于 Django. Django 是一个开放源代码的Web应用框架,由 P ...
- 第四篇:Web框架 - Django
前言 Django是一个开放源代码的Web应用框架,由Python写成.它和J2EE一样,采用了MVC的软件设计模式,即模型M,视图V和控制器C. 本文将讲解DJango框架,并从实际应用的角度讲解一 ...
- Python之路【第十八章】:Web框架
Web框架本质 1.众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 #!/usr/bin/env python # -*- codin ...
- Python之路【第十五篇】WEB框架
WEB框架本质 Python的WEB框架分为两类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理请求 ...
- Python3.5学习十八 Python之Web框架 Django
Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...
随机推荐
- javascript知识体系
JAVASCRIPT 篇 0.基础语法 javascript基础语法包括:变量定义.数据类型.循环.选择.内置对象等. 数据类型有string,number,boolean,null,undefine ...
- Ajax - 发送请求原理
1,什么是ajax? Asynchronous JavaScript and XML(当然现在xml已经由json代替): 主要是用于前后台的交互(表单提交已经被废弃): 使用场景:前台获取数据.表单 ...
- C++ 空字符('\0')和空格符(' ')
1.从字符串的长度:-->空字符的长度为0,空格符的长度为1. 2.虽然输出到屏幕是一样的,但是本质的ascii code 是不一样的,他们还是有区别的. #include<iostrea ...
- markdown一些网站
1.https://stackedit.io/editor 2.https://github.com/bioinformatist/LncPipeReporter 3.
- 【Python】【有趣的模块】【Requests】无状态 & 无连接
无状态:原来的Web是静态,后来换成动态的就需要保存一些上下文信息,session和cookie应运而生 无连接:原来为了请求结束后赶紧把资源让出去,后来发现每次请求中有相同的小请求时候再重复执行(而 ...
- [HTML]js读取XML文件并解析
xml文件:test.xml <?xml version="1.0"?> <note> <to>George</to> <fr ...
- img 下方的4px像素问题
问题:在一个div块里面放了一个图片,图片下面有内容,可以不管怎么调试,在火狐浏览器,IE6下.图片img底部多出了4个像素 解决:img样式中 vertical-align: top/middl ...
- BFC(块级格式化上下文)
转载自:https://www.cnblogs.com/asheng2016/p/7281784.html https://blog.csdn.net/jiaojsun/article/details ...
- Android打开相机进行人脸识别,使用虹软人脸识别引擎
上一张效果图,渣画质,能看就好 功能说明: 人脸识别使用的是虹软的FreeSDK,包含人脸追踪,人脸检测,人脸识别,年龄.性别检测功能,其中本demo只使用了FT和FR(人脸追踪和人脸识别),封装了开 ...
- C# ---- GC中代的递增规律
只有当对象所在代被 Collect 了,改对象所在代才会加 1 ,代值最大为 2 示例1: using System; namespace myMethod { class People{} clas ...