Struts学习笔记--(一)Struts基础
来源:互联网 发布:淘宝上的被子好吗 编辑:程序博客网 时间:2024/05/18 02:34
本文为how2java Struts教程的学习笔记,原教程链接如下:http://how2j.cn/k/struts/struts-jsp/55.html
- Hello Struts
- 用到的jar包
- 新建webxml
- 配置strutsxml
- 创建indexjsp
- 部署Tomcat
- 原理图
- 显示数据到JSP
- 创建Product POJO用于存放数据
- 创建ProductAction控制类
- 在strutsxml中配置跳转
- showjsp
- 测试
- 原理图
- 补充实现一个访问路径转向多个页面
- 提交数据到ACTION
- 创建addProductjsp提交表单
- 配置strutsxml
- ProductAction增加add方法
- 测试
- 原理图
Hello Struts
Struts2 是基于MVC的WEB框架。
用到的jar包
将下面jar包复制到WEB-INF/lib目录下。
新建web.xml
新建项目后,在WEB-INF目录下新建web.xml,其中配置了一个 Filter, 所有的请求都被过滤给了这个 Filter:
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
<web-app> <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> <dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
配置struts.xml
在src目录下创建一个struts.xml文件,这是最简单的struts.xml配置。其效果是当访问index路径的时候,服务端跳转到index.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="index"> <result>index.jsp</result> </action> </package></struts>
创建index.jsp
在web目录下创建index.jsp:
Hello Struts2 World
部署Tomcat
部署在Tomcat中,重启tomcat,然后访问http://localhost:8080/index,观察效果
原理图
- 所有的访问都会被web.xml中配置的Struts 的 Filter所拦截。
- 拦截之后,就进入struts的工作流程。
- 访问的地址是/index,按照 struts.xml中的配置,服务端跳转到index.jsp。
- 显示index.jsp的内容。
显示数据到JSP
创建Product POJO用于存放数据
Model层使用一个简单的Product用于存放数据:
package com.how2java.bean;public class Product { int id; String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
创建ProductAction控制类
package com.how2java.action;public class ProductAction { private Product product; public String show() { product = new Product(); product.setName("iphone7"); return "show"; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; }}
在struts.xml中配置跳转
该配置表示访问路径/showProduct時会调用 ProductAction 类的 show 方法,服务端跳转到show.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.how2java.action.ProductAction" method="show"> <result name="show">show.jsp</result> </action> </package> </struts>
action标签内的<result name="show">
对应ProductAction内show()方法的返回值”show”。一个方法可以根据情况返回不同的返回值,从而转向不同的页面(见补充的例子)。
show.jsp
在web目录下创建show.jsp文件。通过EL表达式,取出product的name。
<%@page isELIgnored="false"%>${product.name}
- ${product}会访问对应的Action的 getProduct()方法。
- 严格地说,是Struts通过getProudct()方法返回product对象,然后再把product对象通过request.setAttribute(“product”,product) 放在”product” 这个key上,这样就方便EL表达式去取出来了。
测试
重启tomcat 访问http://localhost:8080/showProduct观察效果:
原理图
- 访问路径 /showProduct
- 所有访问都被struts的filter所拦截,并进入struts的工作流程
- 根据配置文件struts.xml, 会执行ProductAction的show方法
- 在show方法中,将实例属性product指向一个新的对象,并设置名称为iphone7
- 服务端跳转到show.jsp
- 在show.jsp中,访问ProductAction.getProduct() 获取实例属性product,并显示其名称iphone7
补充:实现一个访问路径转向多个页面
ProductAction内新增方法:
public String randomReturn(){ if(Math.random()<0.5){ return "1"; }else{ return "2"; }}
修改struts.xml:
<action name="testRandom" class="com.how2java.action.ProductAction" method="randomReturn"> <result name="1">1.jsp</result> <result name="2">2.jsp</result></action>
新增1.jsp和2.jsp,重启Tomcat,输入http://localhost:8080/testRandom,不断刷新可以发现有时跳转到1.jsp有时跳转到2.jsp。
提交数据到ACTION
上一节讲述如何将数据从Action传到JSP,这一节讲述如何将数据从JSP提交到Action。
创建addProduct.jsp提交表单
最简单的提交数据的form(先用英文,中文问题之后讲解)
<html><form action="addProduct"> <input type="text" name="product.name"> <br/> <input type="submit" value="submit"></form></html>
配置struts.xml
为addProduct路径配置对应的action和方法以及返回
... <action name="addProduct" class="com.how2java.action.ProductAction" method="add"> <result name="show">show.jsp</result> </action> ...
ProductAction增加add方法
public String add(){ System.out.println("product.name:"+product.getName()); return "show";}
在addProduct.jsp中提交数据的field是product.name,Struts会自动调用对应的Action的setProduct(Product product)方法进行数据的注入。所以ProductAction必须提供setProduct(Product product)方法。在执行到add()方法的时候,jsp传过来的name已经被注入进了product的name中了。
测试
重启tomcat 访问http://localhost:8080/addProduct.jsp:
点击submit:
原理图
- 访问路径 /addProduct
- 所有访问都被struts的filter所拦截,并进入struts的工作流程
- 根据配置文件struts.xml, 会执行ProductAction的add方法
- 在add方法执行之前,Struts生成一个新的product对象,并把页面传递过来的name设置在该对象上,接着把该对象通过setProduct()方法,注入ProductAction
- 服务端跳转到show.jsp
- 在show.jsp中,访问ProductAction.getProduct() 获取注入的product,并显示其名称
- Struts学习笔记--(一)Struts基础
- Struts学习笔记--(二)Struts基础
- Struts学习(一)基础
- Struts学习笔记(一)
- Struts学习笔记(一)
- Struts学习笔记(一)
- Struts学习笔记(一)
- Struts基础学习一
- struts学习笔记(一)
- STRUTS学习笔记(一)
- struts学习笔记一
- Struts学习笔记(一)Struts.xml的配置
- struts 学习笔记(一)--搭建环境
- Struts框架学习笔记(一)
- struts笔记(一)
- Struts学习(一)
- (一)struts之基础
- ssh学习笔记一:struts框架学习
- Windoes_批处理保存win10锁屏壁纸
- xpath匹配属性中含有某值
- vue-cli入门(三)——vue-resource登录注册实例
- selenium IDE的log保存的方法
- Zabbix Server安装(Ubuntu16.04)
- Struts学习笔记--(一)Struts基础
- 198. House Robber
- tensorflow + python3.5 + anaconda
- python笔记2
- spring整合rabbitMq
- 2017年中国程序员调查分析:大数据就业前景广阔
- Makefile简单轻松入门
- java中的代理模式
- Javascript的setTimeOut()和setInterval()的定时器用法