由于现在struts1不常使用了,对于struts1的了解也不是很多,就说Struts2吧,struts的视频是看过期好久好久了一直没有系统的整理,这次打算搭建SSH框架,再重新梳理一遍,说起Struts2我们都知道是由传统的Struts、webwork两个经典MVC框架发展起来的,所以从各种角度来说Struts2都是一个优秀的MVC框架。
今天就先写一个使用struts2框架实现的登录的小实例:
第一步:需要编写web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>strutsdemo</display-name>
<!-- 建立web与struts的关联***************start************** -->
<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>
<!-- 建立web与struts的关联***************start************** -->
</web-app>
第二步:引入struts2需要的jar包:添加到web-info下的lib文件下:
第三步:建立登录的jsp页面:
<!-- 定义标签库 -->
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
</head>
<body>
<!-- 定义一个表单和三个简单表单域 -->
<s:form action="login">
<s:textfield name="username" key="user"></s:textfield>
<s:textfield name="password" key="pass"></s:textfield>
<s:submit key="login"></s:submit>
</s:form>
</body>
</html>
第四步:在jsp中指定表单的action为login,因为必须定义action,代码如下:
package com.tgb.struts2;
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方法
*/
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
if(getUsername().equals("jly") && getPassword().equals("0"))
{
ActionContext.getContext().getSession().put("user",getUsername());
return SUCCESS;
}
else {
return ERROR;
}
}
}
第五步:struts配置文件:增加了Action类之后,还需编辑相应的配置文件:其中需要说明的是,代码中的key是设置的常量,那么这个是在哪里设置的呢?这样:Struts2框架有两个核心配置文件,其中Struts.xml主要负责管理应用中的action映射以及action处理结果和物理资源之间的映射关系,除此之外还包含了一个struts.properties文件,主要用于定义框架的大量常量属性。我们先来看struts.xml配置文件内容:
<struts>
<!-- 通过constant元素配置Struts2的属性 -->
<constant name="struts.custom.i18n.resources" value="mess"></constant>
<package name="demo" extends="struts-default">
<action name="login" class="com.tgb.struts2.LoginAction">
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
定义变量的文件为:
这样jsp页面的显示效果为:
这是一个简单的实例,其中有一个亮点是mess.properties文件可以灵活的配置常量的属性。