【Struts2】Struts2框架的搭建
1,Struts2简介
struts1和struts2都是由Apache组织发布的,但是比较有趣的是struts2和struts1并没有“血缘关系”。在Apache发布struts1之后,当时是还是非常流行的,但是随着时间推荐,这时候struts1暴露的问题就越来越多了,在这个时候opensymphony组织发布了WebWork框架,WebWork框架在当时适应的很好。opensymphony组织由于向外推广的力度不够,使得WebWork不能很快的面向大众。这个时候Apache组织联合opensymphony组织发布了struts2,因此struts2和struts1联系并不大。在struts2刚发布出来的时候,许多的类库都是直接使用struts1的。
2,Struts2和SpringMVC对比
struts2和springMVC结构非常相似,都是基于MVC结构的。就连配置都很相似,关于SpringMVC和Spring的知识可以参见http://www.cnblogs.com/HDK2016/category/918254.html。
下面给两种图片,分别是springMVC和struts2的结构流程图。
SpringMVC流程图:

struts2流程图:

通过这两张图片的对比可以看出。
struts2中的 StrutsPrepareAndExecuteFilter 相当于 SpringMVC中的 DispatcherServlet。
struts2中的 Action 相当于 SpringMVC 中的 Controller
struts2中的 result 相当于 SpringMVC 中的 ViewResovler
3,Struts2框架的搭建
首先应该下载jar包,将jar包导入到项目的lib目录下面。

web.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>struts</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
</web-app>
web.xml
由于struts2默认只处理有以.action结尾或是无后缀的url,所以计算web.xml中过滤器不过滤url,也会有url的限制,一般在struts2项目中不再web.xml中过滤url。web.xml会默认在加载src目录下的struts.xml文件。注意文件名称不要改变,否则的话也可以在web.xml中指定struts.xml的位置。
struts.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts>
<!--Struts默认只会通过.action和无后缀的请求,我们可以通过指定extension来使得Struts只通过.do的URL的请求。-->
<constant name="struts.action.extension" value="do"/> <!-- 必须继承struts-default,才能使用Result组件 -->
<package name="user" extends="struts-default">
<!-- name请求名;class是Action类名;method是Action方法名,默认execute -->
<action name="userlogin" class="cn.test.controller.UserLogin">
<!-- name对应action返回值;type指定Result 类型 -->
<result name="result" type="dispatcher">loginResult.jsp</result>
</action>
</package>
</struts>
struts.xml
我们在struts.xml文件中使用<constant>覆盖了默认了文件扩展名,使得只处理以.do的url,如果想接受多个,那么以逗号隔开。比如: value="do,action,," ,就可以处理以.do,.action和无后缀的url了。
UserLogin.java 文件
package cn.test.controller;
public class UserLogin {
/*
*struts中规定,接受页面传过来的值和发送到页面中值都通过声明全局变量,然后通过setter和getter方法完成。
*/
private String username;//名字可要页面传过来的值一致,否则不能正确接受值
private String password;
private String resultmessage;//返回值
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getResultmessage() {
return resultmessage;
}
public void setResultmessage(String resultmessage) {
this.resultmessage = resultmessage;
}
public String execute(){
if("张三".equals(username) && "123456".equals(password)){
resultmessage="登录成功";
}else{
resultmessage="登录失败";
}
return "result";
}
}
UserLogin.java
Struts2规定,从页面接受值和传送值到页面都是通过全局变量来实现的。然后控制器中方法的返回值只有两种,一种是Sting,另一中就是void。
login.jsp 文件
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户登录</title>
</head>
<body>
<form action="userlogin.do" method="POST"> 用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/> <input type="submit" value="提交"/>
</form>
</body>
</html>
login.jsp
loginResult.jsp 文件
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户登录</title>
</head>
<body>
${resultmessage}
</body>
</html>
loginResult.jsp
到这里我们就配置一个简单的用户登录的struts2框架了。
【Struts2】Struts2框架的搭建的更多相关文章
- 【Spring】Spring+struts2+Hibernate框架的搭建
1.搭建过程 首先需要引入Spring.Struts2.Hibernate的开发包,已经数据库的驱动包. UserAction.java文件 package cn.shop.action; impor ...
- Struts2+Spring+Hibernate(SSH)框架的搭建
首先需要下载struts2 ,spring4,hibernate5 的资源包; struts2资源包下载路径:http://www.apache.org/spring资源包下载路径:http://p ...
- Struts2+Hibernate4+Spring4框架整合搭建Java项目原型
收藏 http://www.cnblogs.com/mageguoshi/p/5850956.html Struts2+Hibernate4+Spring4框架整合搭建Java项目原型
- struts2.1笔记05:struts2开发环境的搭建
1.找到开发Struts应用需要使用到的jar文件. 首先我们要在myEclipse中新建一个Web Project,我们这里命名为"struts2".然后我们就要使用jar文件, ...
- spring+struts2+ibatis 框架整合以及解析
一. spring+struts2+ibatis 框架 搭建教程 参考:http://biancheng.dnbcw.net/linux/394565.html 二.分层 1.dao: 数据访问层(增 ...
- struts2.5框架使用通配符指定方法常见错误
struts2.5框架使用通配符指定方法(常见错误) 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace ...
- 关于struts2 验证框架在联网的时候可以用,不联网不起作用的问题
这是一个让我很头痛的问题,我是在一个其他的项目框架的基础上来开发新的项目. 当使用struts验证框架时,突然发现这个验证不起作用了,我就纳闷了之前用这个开发的项目好好的怎么到我这就不能用了呢? xm ...
- struts2笔记01-环境搭建
1.官网下载struts2 struts-2.3.28-all.zip,这个包可谓应有尽有,以后全靠它了! 2.jar包怎么选? (1)struts-2.3.28-all\struts-2 ...
- Struts2+Hibernate框架探险
写这篇文章的目的 了解 JavaWeb 开发的人都知道SSH和SSM框架,前段时间开始接触 JavaWeb 开发,看了几个教学视频后就想上手构建一个小型 Web项目,可在跟着视频敲代码当中,使用 St ...
随机推荐
- Python MySQLdb模块连接操作mysql数据库实例_python
mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...
- 【BLE】CC2541之加入自己定义任务
本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文介绍怎样在SimpleBLEPeripheralproject中.加入一个香瓜任务. (香瓜任务与project原有任务相 ...
- C#中RSA加密解密和签名与验证的实现
RSA加密算法是一种非对称加密算法.在公钥加密标准和电子商业中RSA被广泛使用.RSA是1977年由罗纳德•李维斯特(Ron Rivest).阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Le ...
- Go语言中Socket通信之Tcp客户端
1.用法: (1)定义远程IP地址.使用net.ResolveTCPAddr()方法,定义一个TCP地址,做为目标连接地址. (2)调用net.DialTCP("tcp",nil, ...
- 【推荐】ImageProcessor.Web,再也不用自己生成缩略图了
1.什么是ImageProcessor.Web ImageProcessor.Web是基于ImageProcessor的web图像处理模块,允许开发者使用URL查询字符串参数的方式作为指令执行图像处理 ...
- arm-linux 裸机下 VNC 的实现
这里的 arm-linux 裸机指的是,只有基本 C 库和安装了 busybox 的嵌入式系统,没有 X11 或者 wayland 作为底层支援. 这里的实现是基于 framebuffer 的,是将用 ...
- 整合Tomcat和Nginx实现动静态负载均衡
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6386135.html Nginx与tomcat整合可以实现服务器的负载均衡. 在用户的请求发往服务器进行处理时 ...
- cocos2d-js Shader系列3:多重纹理 multiple textures multiple samplers
上一篇,我们学习了怎么便捷的控制sprite的颜色,而这个都是默认一个texture的,如果要实现类似mask的效果,或者更个性化的多纹理效果,怎么实现呢? 这就是这一节需要介绍的内容. 例如上图的效 ...
- DataTables | Table plug-in for jQuery
DataTables | Table plug-in for jQuery https://datatables.net/
- Java程序监控指标
监控指标: 1.CPU平均使用率 2.内存平均使用率 3.应用程序错误数 4.应用程序请求量 5.应用平均响应时间 6.硬件I/O指标 7.JMX 7.1.Full gc count 7.2.Full ...