【SSH三大框架】Struts2基础第一篇:编写第一个Struts2程序

来源:互联网 发布:驾校数据库 编辑:程序博客网 时间:2024/05/22 06:45

本年八月份的时候已经是把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方法中,我们定义了一个处理的逻辑,

这个逻辑规定用户名和密码等于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就可以执行相关的操作了




0 0
原创粉丝点击