Struts2.0是struts1.0和WebWork2.2合并版本,集成了兩大流行MVC框架的優(yōu)點,對struts框架來說是一個大的提升,同時也更大程度地簡化了開發(fā)人員的開發(fā)過程。
這個例子實現(xiàn)了一個簡單的登陸效果,操作步驟如下:
1、首先,要從apache網(wǎng)站上下載struts2.0.11的完整包(http://struts.apache.org/downloads.html),解壓后需要找到下列幾個文件:
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.jar
xwork-2.0.4.jar
2、然后,我們就開始做第一個例子,新建web項目struts2
3、將上面列舉的jar文件拷貝到項目struts2\WEB-INF\lib中,或添加自己的strust2.0用戶庫
4、新建login.jsp
- <?xml version="1.0" encoding="UTF-8" ?>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Insert title here</title>
- </head>
- <body>
- <form action="login.action" method="post">
- username:<input type="text" name="username" /><p>
- password:<input type="password" name="password" /><p>
- <input type="submit" name="Submit" value="提交" />
- </form>
- </body>
- </html>
struts1與struts2的區(qū)別:
<form action="login.action" method="post">
struts1通過servlet攔截所有發(fā)送過來以do結(jié)尾的請求,交有ActionServlet控制,決定由那個Action進行處理
5、新建result.jsp
- <?xml version="1.0" encoding="UTF-8" ?>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Insert title here</title>
- </head>
- <body>
- username:${requestScope.username}<br>
- password:${requestScope.password}
- </body>
- </html>
6、修改web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app id="WebApp_ID" 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>
- struts2.0</display-name>
- <welcome-file-list>
- <welcome-file>login.jsp</welcome-file>
- </welcome-file-list>
- <filter>
- <filter-name>struts2.0</filter-name>
- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2.0</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
struts1與struts2的區(qū)別:
struts1是通過servlet做控制器
struts2這里采用Filter過濾客戶端發(fā)過來的請求
7、創(chuàng)建loginAction.java
- package com.action;
- public class loginAction {
- 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;
- }
- public String execute()throws Exception{
- return "success";
- }
- }
struts1與struts2的區(qū)別:
struts1必須繼承Action,覆蓋execute()
struts2則不需要
8、添加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>
- <package name="struts2.0" extends="struts-default">
- <action name="login" class="com.action.loginAction">
- <result name="success">/result.jsp</result>
- </action>
- </package>
- </struts>
struts1與struts2的區(qū)別:
struts1在項目\WEB-INF\struts-config.xml配置文件
struts2在項目\src\struts.xml配置文件
9、o了,簡單的例子以完成,下面是代碼重構(gòu):
使用struts2.0標(biāo)簽,添加校驗功能
1、修改login.jsp,改為使用struts2.0標(biāo)簽
導(dǎo)入標(biāo)簽<%@ taglib prefix="s" uri="/struts-tags"%>
把form表單替換為使用struts2.0標(biāo)簽
- <s:form action="login">
- <s:textfield name="username" label="username"></s:textfield>
- <s:password name="password" label="password"></s:password>
- <s:submit label="submit"></s:submit>
- </s:form>
(使用標(biāo)簽可以自動換行,按鈕默認(rèn)右對齊)
2、修改loginAction.java
loginAction繼承ActionSupport
重寫Validate()驗證方法
- @Override
- public void validate() {
- if(null==this.getUsername()||"".equals(this.getUsername().trim())){
- this.addFieldError("username", "username error");//添加錯誤信息
- }
- if(null==this.getPassword()||"".equals(this.getPassword().trim())){
- this.addFieldError("password", "password error");//添加錯誤信息
- }
- }
3、修改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>
- <package name="struts2.0" extends="struts-default">
- <action name="login" class="com.action.loginAction">
- <!-- 添加出錯返回的頁面 -->
- <result name="input">/login.jsp</result> <result name="success">/result.jsp</result>
- </action>
- </package>
- </struts>
struts1與struts2的區(qū)別:
struts1需要在form里添加<html:errors/>標(biāo)簽,來提示錯誤處理的信息
struts2則不需要
匹配用戶名為hello,密碼為world
1、修改loginAction.java下的execute()方法
- public String execute()throws Exception{
- if("hello".equals(this.getUsername().trim())&&"world".equals(this.getPassword().trim())){
- return "success";
- }
- else{
- this.addFieldError("username", "username or password error");//定義在username上面提示錯誤信息
- return "failer";
- }
- }
2、修改struts.xml,增加failer映射
- <?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>
- <package name="struts2.0" extends="struts-default">
- <action name="login" class="com.action.loginAction">
- <result name="input">/login.jsp</result>
- <result name="success">/result.jsp</result>
- <!-- 增加failer映射 -->
- <result name="failer">/login.jsp</result>
- </action>
- </package>
- </struts>
3、全部完成,把制作好的web應(yīng)用struts2拷貝到tomcat下運行