Struts2简诉
Struts2框架是基于MVC模式的开源,MVC模式是一种开发方式,主要作用是对组件之间进行隔离,M代表业务逻辑层,V代表视图层,C代表控制层。有利于代码的后期维;Struts2框架的源码主要来于WebWork框架,是在WebWork框架基础上再与Struts1的优点进行整合而设计出新的MVC分层框架。
Struts官方地址:http://struts.apache.org
下面做一个简单的登陆功能以演示Struts2,先看一下项目的结构

1.配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Struts通过使用Filter拦截器来拦截以jsp、js、或者action为后缀的请求 -->
<filter>
<filter-name>Struts 2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts 2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Struts 2</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Struts 2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!--
以上简化的写法
<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>-->
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2.创建控制层Login.java文件
package controller;
import model.UserInfoService;
/**
* 使用Servlet作为控制层时,自定义的Servlet类需要继承HttpServlet类,
* 而Struts2不需要继承任何类就可以实现Controller控制层的功能。
* 方法execute()是固定的写法,Struts2对这种写法是有声明格式规定的,访问权限必须是public,
* 改方法返回类型是String,方法名是execute。这是一个约定,它是Status2默认会调用的方法,
* 返回值String类型代表了一个逻辑名称,通过这个名称找到对应的JSP文件。
* username与password与JSP文件中的<input/>标签的name属性相对应
* @author LJX
*
*/
public class Login {
private String username;
private String password;
//get,set方法
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 execute(){
UserInfoService usRef = new UserInfoService();
if(usRef.login(username, password)){
return "toOKJSP";
}else{
return "toNOJSP";
}
}
}
3.创建业务逻辑层UserInfoService.java文件
package model;
public class UserInfoService {
//逻辑判断
public boolean login(String username,String password){
if(username.equals("a") && password.equals("a")){
return true;
}else{
return false;
}
}
}
4.创建index.jsp、ok.jsp、no.jsp视图文件
index.jsp
<body>
<form action="login.action" method="post">
username:
<input type="text" name="username" /><br>
password:
<input type="text" name="password" /><br>
<input type="submit" value="登录" />
</form>
</body>
ok.jsp
<body>
This is OK page. <br>
</body>
no.jsp
<body>
This is NO page. <br>
</body>
5.创建核心配置文件struts.xml
<?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>
<!-- 是struts框架运行在开发模式,对异常的报错信息显示的比较完整 -->
<constant name="struts.devMode" value="true"/>
<!-- 定义一个package包,与java中的包不同的是struts中的包可以继承
extends="struts-default"的作用是自定义的包struts2login
继承自系统自带的包struts-default,这样可以将系统自带功能得到复用,
比如上传下载
-->
<package name="Struts2login" extends="struts-default">
<!-- 将一个Login.java这个普通的JavaBean可以接受HTTP请求,name属性
是访问路径,需要加.action为后缀,class属性为Login.java类的路径
-->
<action name="login" class="controller.Login">
<result name="toOKJSP">/ok.jsp</result>
<result name="toNOJSP">/no.jsp</result>
</action>
</package>
</struts>
代码敲完了,相信能有一个初步的对Struts2的认识,将项目发布到Tomact运行看效果,代码给了很详细的解释!
学海无涯,苦渡而已!!
Struts2简诉的更多相关文章
- Android -- Apk安装简诉
安装涉及到如下几个目录 system/app 系统自带的应用程序,无法删除 data/app 用户程序安装的目录,有删除权限. 安装时把apk文件复制到此目录 data/data 存放 ...
- Mybaits简诉
先组织一下语言!Mybatis是一个框架,一个数据持久化的框架,作用就是SQL语句的映射!减少了JDBC繁琐的数据操作与类型转换!简而言之,就是方便.轻巧!什么是持久化,持久,恩,JDBC就是一个数据 ...
- Jquery与DOM对象
在第一次学习jquery中,常常会不能分辨DOM对象和Jquery对象,下面我们就简诉一下它们之间的关系和区别 1.DOM对象(Document Object Model) 文档对象模型,每一份DOM ...
- magento安装wordpress
说起来事实上很easy,如今简诉一下安装过程 1.到magento connect界面安装magento扩展,地址:http://www.magentocommerce.com/magento-con ...
- C#高级特性(反射)
今天来讲解反射的应用: 一.反射是什么? 简诉一下,反射就是.Net Framework 的一个帮助类库,可以获取并使用metadata(元数据清单):说的通俗易懂点,就是不用通过引用,仍然可以使用其 ...
- Struts2 源码分析——Result类实例
本章简言 上一章笔者讲到关于DefaultActionInvocation类执行action的相关知识.我们清楚的知道在执行action类实例之后会相关处理返回的结果.而这章笔者将对处理结果相关的内容 ...
- Struts2 源码分析——DefaultActionInvocation类的执行action
本章简言 上一章讲到关于拦截器的机制的知识点,让我们对拦截器有了一定的认识.我们也清楚的知道在执行用户action类实例之前,struts2会先去执行当前action类对应的拦截器.而关于在哪里执行a ...
- Struts2 源码分析——拦截器的机制
本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...
- Struts2 源码分析——Action代理类的工作
章节简言 上一章笔者讲到关于如何加载配置文件里面的package元素节点信息.相信读者到这里心里面对struts2在启动的时候加载相关的信息有了一定的了解和认识.而本章将讲到关于struts2启动成功 ...
随机推荐
- CRL快速开发框架4.4版发布,支持主从读写分离
经过一些调整和优化,4.3已经运行在生产环境,对于不久将会遇到的查询性能,读写分离需求列上日程 读写分离需求 对于一个数据库作了主从发布/订阅,主库为DB1,从库为DB2 所有写入通过DB1,所有查询 ...
- Spring AOP拦截对Controller的请求时的配置失败
简单的说,就是父子容器的问题,将AOP的配置信息放在applicationContext.xml中,该配置文件被ContextLoaderListener加载,Spring会创建一个WebApplic ...
- 深入理解JavaScript中的闭包
闭包没有想象的那么简单 闭包的概念在JavaScript中占据了十分重要的地位,有不少开发者分不清匿名函数和闭包的概念,把它们混为一谈,我希望借这篇文章能够让大家对闭包有一个清晰的认识. 大家都知道变 ...
- Mac远程连接windows报错“证书或相关链无效,是否仍要连接到此计算机”的处理办法。
这个主要是因为策略组设置的问题.详细的设置方法如下: 本地计算机策略>计算机配置>管理模板>windows组件>远程桌面服务>远程桌面会话主机>安全>远程(R ...
- 常见浏览器User-Agent大全
http://blog.csdn.net/tianjinjianzhan/article/details/51702232
- MiniProfiler使用点滴记录-2017年6月23日11:08:23
1.看似针对同样一段查询表ef达式,重复执行却没有被记录下来.其实这是正常情况,因为ef并没有重复去执行 相同sql查询. 2.MiniProfiler结合MVC过滤器进行 拦截记录Sql,示例代码: ...
- Linux中samba服务器的搭建
使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samba服务. 一.先查看系统中是否安装有samba服务相关的软件 ...
- nginx是什么nginx安装与配置之windows版
1.nginx是什么 为了快速了解nginx我们先引用网上的nginx介绍: Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP ...
- [leetcode-504-Base 7]
Given an integer, return its base 7 string representation. Example 1: Input: 100 Output: "202&q ...
- require.js详解
一:什么是require.js ①:require.js是一个js脚本加载器,它遵循AMD(Asynchronous Module Definition)规范,实现js脚本的异步加载,不阻塞页面的渲染 ...