十四、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框架的两种形式 ...
随机推荐
- Leaflet中添加的不同图层样式图标
如上图,具体问题请查看对应html页引用的basemaps的css样式. 如下图是本项目引用的css样式: .basemap img { width: 48px; border: 2px solid ...
- transient关键字详解
作用 1,一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问. 2,transient关键字只能修饰变量,而不能修饰方法和类.注意,本地变量是不能被tr ...
- 【Ruby】【改gem源镜像】【Win10 + Jruby-9.1.2.0 + Rails 5.1.3 + gem 2.6.4 】
参考地址:https://ruby-china.org/topics/33843 (1)> gem sources --add http://gems.ruby-china.org 遇到问题: ...
- _itemmod_extract_enchant
comment 备注 entry 物品ID CanExtract 1 - 可提取随机FM 0 - 不可提取随机FM,当CanExtract = 1 且有随机FM效果时,随机FM效果会被提取 CanEn ...
- Mysql 函数使用记录(三)——UNIX_TIMESTAMP() 、UNIX_TIMESTAMP(date)
参考资料:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_unix-timestamp UN ...
- Django 操作Mysql数据库
pip安装mysqlclient sudo ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config sudo pip i ...
- 借助JCharDet获取文件字符集
前段时间,在学习lucene的时候,遇到了读取txt文档遇到编码错误的问题.学了几个解决方案,大部分是将文件转十六进制(可以使用UE的Ctrl+H来查看),读取开头的四个标志位来判断.可是总有些文本文 ...
- leecode第五十九题(螺旋矩阵 II)
class Solution { public: vector<vector<int>> generateMatrix(int n) { )//特殊情况 { vector< ...
- nodejs + ts 配置
参考:https://github.com/nestjs/typescript-starter 和 How to get auto restart and breakpoint support wit ...
- 将本地项目上传到gitlab下
转载自: https://blog.csdn.net/litianxiang_kaola/article/details/74075151 1.安装git https://git-scm.com ...