1.0、Struts2的简单搭建方法
一、Struts2:是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet;用于jsp页面与Java代码之间的交互。
1、核心:Filter拦截器,对所有的请求进行拦截。
2、工作流程:http://localhost:8080/项目名/请求 --> 被web.xml中的Struts拦截器拦截到strus.xml文件-->找到对应的action里面对应的name,也就找到了对应的类-->通过action里面的method参数找到对应的执行方法,并返回一个字符串-->找到action标签中的result标签中的name与返回值相匹配-->跳转到向应的jsp页面。
3、配置:
1、将strus2所需的jar包添加到 项目名\WEB-INF\lib 中
2、复制struts.xml文件到 src目录下
3、写action代码。注意:
a)、Struts的action方法都是待返回值的方法
b)、 在action类中需要实现modelDriven 来自动的将页面参数注入到对象中去。因此jsp页面的标签中的name属性必须跟Java类的属性字段完全对应。
4、在web.xml文件中编写Strus2的Filter核心拦截器
5、在strust.xml文件中去配置package标签中的属性。
二、Struts2的简单搭建:
1、新建一个web项目
2、新建一个Person类
package com.st.bean; public class Person {
private int id;
private String name;
private int age;
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;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
3、将Struts2所需的jar包考到lib文件下
4、在web.xml文件中编写struts2的核心拦截器,这里面的类容最好直接拷贝不要手敲,容易出错。
<!-- ********************************** -->
<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>
<!-- ********************************** -->
5、在index.jsp编写HTML代码,注意标签的name值和Person类的字段相对应
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2核心拦截器示例</title>
</head> <body>
<form method="post" action="<%=request.getContextPath() %>/person/personAdd">
<table>
<tr>
<td>ID:</td>
<td><input type="text" name="id" value="${id}"/></td>
</tr>
<tr>
<td>姓名:</td>
<td><input type="text" name="name" value="${name}"/></td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age" value="${age}"/></td>
</tr>
<tr>
<td><input type="submit" /></td>
<td><input type="reset" /></td>
</tr>
</table>
</form>
</body>
</html>
6、拷贝一个struts.xml文件到src文件下,修改package标签中的属性值,如果action标签中不指定method属性,那么会默认的执行execute()方法。
<?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="" namespace="url的中间路径" extends="struts-default">
<action name="访问的路径" class="对应的action类" method="类里面对应的方法" >
<result name="action方法里面返回的字符串" >对应的jsp页面的路径</result>
</action>
</package>
</struts> -->
<struts>
<package name="person" namespace="/person" extends="struts-default" >
<action name="personAdd" class="com.st.action.PersonAction" method="personAdd">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
7、编写action代码:继承PersonAction得到execute()方法,实现ModelDriven接口重写getModel方法
package com.st.action; import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.st.bean.Person; public class PersonAction extends ActionSupport implements ModelDriven<Person>{ private Person person;
//如果不指定action中的method,就会默认的走这个方法
public String execute() throws Exception{
return SUCCESS;
}
//主题在Struts2中的action中的方法都必须返回一个String类型的参数
public String personAdd(){
System.out.println(person.getId()+"---"+person.getName()+"----"+person.getAge());
return SUCCESS;
}
//让jsp页面的name对应的value自动注入到对象中的属性中去。
public Person getModel() {
this.person = new Person();
return person;
}
}
1.0、Struts2的简单搭建方法的更多相关文章
- 基于MVC设计模式的Web应用框架:struts2的简单搭建(一)
Struts2的初步介绍 Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴.京东等互联网.政府.企业门户网站.虽然之前存在了很大的安全漏洞,在2013年让苹果.中国移动.中国联 ...
- 【SSH】——Struts2中的动态方法调用(一)
首先我们来看一个简单的调用: 1.在web.xml中配置拦截器StrutsPrepareAndExecuteFilter.StrutsPrepareAndExecuteFilter实现了filter接 ...
- Struts2开发环境搭建,及一个简单登录功能实例
首先是搭建Struts2环境. 第一步 下载Struts2去Struts官网 http://struts.apache.org/ 下载Struts2组件.截至目前,struts2最新版本为2.3.1. ...
- thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
这篇文章主要介绍了thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法,结合简单示例形式分析了thinkPHP5框架验证码相关配置.后台验证.前台刷新等操作技巧,学习thinkphp源码的朋 ...
- .Net Core3.0 WebApi 项目框架搭建 一:实现简单的Resful Api
.Net Core3.0 WebApi 项目框架搭建:目录 开发环境 Visual Studio 2019.net core 3.1 创建项目 新建.net core web项目,如果没有安装.net ...
- 【Struts2】Struts2框架的搭建
1,Struts2简介 struts1和struts2都是由Apache组织发布的,但是比较有趣的是struts2和struts1并没有“血缘关系”.在Apache发布struts1之后,当时是还是非 ...
- springmvc4环境简单搭建和定时任务
之前复制粘贴创建了几个ssm的项目,然而回头让自己写的时候还是一头雾水,究其原因是spring的陌生.仅仅是写过几个helloworld而已.而且是照着写.我都不知道springmvc到底需要多少ja ...
- Redis Cluster搭建方法简介22211111
Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼ Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...
- 零配置简单搭建SpringMVC 项目
SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...
随机推荐
- Ubuntu配置OpenLDAP
sudo apt-get install slapd ldap-utils sudo dpkg-reconfigure slapd sudo apt-get purge slapd sudo apt- ...
- Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- OpenCV 之 编译和配置
“工欲善其事,必先利其器”,下面介绍在 Win7 32位系统下,用 cmake 编译 OpenCV 的过程. 1 开发环境 1.1 Win7 Windows 7 家庭普通版,Service Pac ...
- HTML ------ 关于表单 Form
Form(表单)主要用于采集和提交用户输入的信息,是页面与WEB服务器交互过程中 最重要的信息来源. 掌握表单(Form)有以下几个要点: 重要form属性 form常用控件 form提交方式 § 重 ...
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- MVC4 自定义错误页面(转)
一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.We ...
- cf Round 603
A.Alternative Thinking(思维) 给出一个01串,你可以取反其中一个连续子串,问取反后的01子串的最长非连续010101串的长度是多少. 我们随便翻一个连续子串,显然翻完之后,对于 ...
- Java 8新特性终极指南
目录结构 介绍 Java语言的新特性 2.1 Lambdas表达式与Functional接口 2.2 接口的默认与静态方法 2.3 方法引用 2.4 重复注解 2.5 更好的类型推测机制 2.6 扩展 ...
- Django的views中的request
Django使用request和response对象在系统间传递状态. 当一个页面被请示时,Django创建一个包含请求元数据的 HttpRequest 对象. 然后Django调入合适的视图,把Ht ...
- NVelocity解析字符串
之前都是先从模板文件里面读取html字符串,现在要求将模板存入数据库或缓存了,怎么办呢?在网上找了下资料,终于找到解决办法. 如下: public class NVelocityHelper { // ...