【SSH三框架】Struts2第一章的基础:第一次写Struts2规划
今年八月,当已经SSH三架完成学业。然后,他感动Android开展。三个框架已经很长的时间做无用的东西。所以,如果你想花三四天的时间来复习一下,写在博客。
附带SSH整个jar包网盘下载:http://pan.baidu.com/s/1hqf5ta8
首先,我们新创建一个web项目,然后引入jar包:commons-fileupload。commons-io。freemarker,javassist。ognl。struts2-core,xwork-core。
这里不过个简单的struts程序。所以只引入了这些jar包
接下来,我们就是配置web.xml的内容了,web.xml:
- <?xml version="1.0" encoding="GBK"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
- <!-- 定义Struts2的核心Filter -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <!-- 让Struts2的核心Filter拦截全部请求 -->
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
这里边是定义了一个Struts2的核心拦截器,Struts2的核心就是环绕拦截器而生的
然后。我们写一个登陆的页面:login.jsp
- <%@ page language="java" contentType="text/html; charset=GBK"
- pageEncoding="GBK"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <!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=GBK">
- <title><s:text name="loginPage"/></title>
- </head>
- <body>
- <s:form action="login">
- <s:textfield name="username" key="user"/>
- <s:textfield name="password" key="pass"/>
- <s:submit key="login"/>
- </s:form>
- </body>
- </html>
这里用到了struts2的标签库。在以后会做介绍
在login.jsp我们为form表单定义了一个action,是在点击login之后跳转的作用。在学servlet的时候应该都用过。
这个action我们能够在struts.xml中定义。这个struts.xml我们通常是放在src文件夹下边。也能够变化(只是也要改变对应的路径)
struts.xml:
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
- "http://struts.apache.org/dtds/struts-2.1.7.dtd">
- <!-- 指定Struts 2配置文件的根元素 -->
- <struts>
- <!-- 指定全局国际化资源文件 -->
- <constant name="struts.custom.i18n.resources" value="mess"/>
- <!-- 指定国际化编码所使用的字符集 -->
- <constant name="struts.i18n.encoding" value="GBK"/>
- <!-- 全部的Action定义都应该放在package下 -->
- <package name="lee" extends="struts-default">
- <action name="login" class="org.crazyit.app.action.LoginAction">
- <!-- 定义三个逻辑视图和物理资源之间的映射 -->
- <result name="input">/login.jsp</result>
- <result name="error">/error.jsp</result>
- <result name="success">/welcome.jsp</result>
- </action>
- </package>
- </struts>
这里其他的东西不用管,我们看下<package></package>标签中的内容,这里边定义了一个action,设置name属性为“login”,class属性为:LoginAction
然后下边是三个result,分别有各自的name属性。
这个struts.xml的作用就是:当页面发来请求。由struts.xml处理,跳转到对应的java处理程序,然后通过java处理程序跳转到对应的result页面
然后,我们看LoginAction.java:
- package org.crazyit.app.action;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction extends ActionSupport
- {
- //定义封装请求參数的username和password属性
- private String username;
- private String password;
- 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;
- }
- //定义处理用户请求的execute方法
- public String execute() throws Exception
- {
- //当username为crazyit.org。password为leegang时即登录成功
- if (getUsername().equals("crazyit.org")
- && getPassword().equals("leegang") )
- {
- ActionContext.getContext().getSession()
- .put("user" , getUsername());
- return SUCCESS;
- }
- else
- {
- return ERROR;
- }
- }
- }
在LoginAction.java中我们定义了两个属性:username和password,而且定义了一个execute()方法,这种方法是默认的sruts处理方法
在这个execute方法中,我们定义了一个处理的逻辑,
这个逻辑规定username和password等于XXX的时候,利用ActionContext.getContext().getSession().put()函数,加入一个属性user。内容为:getUsername()。
而且。return SUCCESS。
这里的SUCCESS相应的就是struts.xml中的<result name="success">/welcome.jsp</result>
PS:须要注意的一点。我们能够return不论什么的一个字符串,仅仅要在struts.xml中有与其相应的result就可以。
这里是由于继承了ActionSuppot,所以SUCCESS没有加上双引號,由于SUCCESS在ActionSuppot中默觉得“success"字符串。
然后,我们运行:http://localhost:8080/Struts2Demo/login.jsp就能够运行相关的操作了
版权声明:本文博主原创文章,博客,未经同意不得转载。
【SSH三框架】Struts2第一章的基础:第一次写Struts2规划的更多相关文章
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- 第一章 jQuery基础
第一章jQuery基础 一.jQuert简介 1.什么是jQuery jQuery是javaScript的程序库之一,它是javaScript对象和实用函数的封装. jQuery是继Prototype ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
- 第一章 –– Java基础语法
第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...
- [Python笔记][第一章Python基础]
2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...
- python第一章计算机基础
第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ...
- apue学习笔记(第一章UNIX基础知识)
总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...
随机推荐
- Scala---For语句段
For语句段 语法: Expr1 ::= „for‟ („(‟ Enumerators „)‟ | „{‟ Enumerators „}‟) {nl} [„yield‟] Expr Enumerato ...
- Android - 用Fragments实现动态UI - 创建灵活的UI
当设计程序来支持各种不一样的屏幕尺寸时,可以在不同的布局中重用fragment来根据可用的屏幕大小来优化用户体验. 例如,在手机上可能使用一个fragment来使用单窗口用户体验比较合适.但是,你可能 ...
- 【C语言探索之旅】 第三课:你的第一个程序
内容简介 1.课程大纲 2.第一部分第三课:你的第一个程序 3.第一部分第四课预告:变量的世界 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个 ...
- MVC下判断用户登录和授权状态方法
MVC下判断用户登录和授权状态方法 在我们日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization ...
- Python学习笔记12:标准库之对象序列化(pickle包,cPickle包)
计算机的内存中存储的是二进制的序列. 我们能够直接将某个对象所相应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本流存入到文件里. 因为Python在创建对象时,要參考 ...
- 【转】window.scroll 浏览器滚动条的参数总结
如内容超出单元格,则隐藏style="TABLE-LAYOUT: fixed" 让弹出窗口总是在最上面: <body onblur="this.focus();&q ...
- RH253读书笔记(4)-Lab 4 The Domain Name System
Lab 4 The Domain Name System Goal: To install and configure a DNS server System Setup: Throughout th ...
- jsp、Servlet相关知识介绍(转)
1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...
- Android MotionEvent事故响应机制
于android于.主要活动包括点击.按.拖累.滑动等操作,这些构成了Android事件响应,总体而言,,所有事件由例如以下三部分构成的基础: 按(action_down),搬家(action_mov ...
- ASP.NET程序读取二代身份证(附源码)
原文:ASP.NET程序读取二代身份证(附源码) 一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一 ...