JavaEE Struts基础
软件152 王程燕
1.Struts
新建web project,解压刚下载的struts包并将下面九个包放到lib目录下(保险的办法的把所有jar包全放过去,必须用到的是下面的几个,比较多的说法是引五个核心包,但只有那五个是不够的):
commons-fileupload-1.2.2.jar(文件上传);
commons-io-2.0.1.jar(输入输出流组建);
commons-lang-2.5.jar(工具类);
commons-logging-1.1.1.jar(日志包);
freemarker-2.3.16.jar(UI标签模板);
javassist-3.11.0.GA.jar(分析、编辑和创建Java字节码的类库);
ognl-3.0.1.jar(语言包);
struts2-core-2.2.3.1.jar(核心类库);
xwork-core-2.2.3.1.jar(Xwork类库)。
下面进行FilterDispatcher的配置:
打开WebRoot/WEB-INF/web.xml文件,加入如下代码:
<?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <display-name></display-name> 8 9 <!--=======================配置struts2============================--> 10 <filter> 11 <filter-name>struts2</filter-name> 12 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 13 </filter> 14 <filter-mapping> 15 <filter-name>struts2</filter-name> 16 <url-pattern>*.action</url-pattern> 17 <url-pattern>*.jsp</url-pattern> 18 </filter-mapping> 19 <!--==============================================================--> 20 21 <welcome-file-list> 22 <welcome-file>login.jsp</welcome-file> 23 </welcome-file-list> 24 </web-app>
这里FilterDispatcher用来初始化struts2,并且处理以.action和.jsp结尾的web请求。
在WebRoot下新建一个login.jsp:
1 <%@ page language="java"import="java.util.*" pageEncoding="gb2312"%> 2 <%@ taglib uri="/struts-tags" prefix="s"%> 3 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head></head> 7 <body> 8 <s:form action="LoginAction.action"> 9 <s:textfield name="username" label="用户名:"></s:textfield> 10 <s:password name="password" label="密码:"></s:password> 11 <s:submit value="登陆"></s:submit> 12 </s:form> 13 </body> 14 </html>
在src中新建LoginAction类,处理登录请求:
package action; 2 import com.opensymphony.xwork2.ActionSupport; 3 4 @SuppressWarnings("serial") 5 public class LoginAction extends ActionSupport { 6 private String username =null; 7 private String password =null; 8 @Override 9 public String execute() throws Exception { 10 // TODO Auto-generated method stub 11 if(username.equals("admin") && password.equals("888888")){ 12 return SUCCESS;//Action类中的常量,值为字符串success 13 } 14 return LOGIN;//Action类中的常量,值为字符串login 15 } 16 public String getUsername() { 17 return username; 18 } 19 publicvoid setUsername(String username) { 20 this.username = username; 21 } 22 public String getPassword() { 23 return password; 24 } 25 public void setPassword(String password) { 26 this.password = password; 27 } 28 }
下面编写登陆成功后的页面,在WebRoot下新建success.jsp:
1<%@ page language="java"import="java.util.*" pageEncoding="gb2312"%> 2 <%@ taglib uri="/struts-tags" prefix="s"%> 3 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head></head> 7 <body> 8 <h1>欢迎回来 <s:property value="username"/></h1> 9 </body> 10 </html>
之后在src目录下建struts.xml,用来配置上面Action的信息:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 <package name="package"extends="struts-default"> 7 <global-results> 8 <result name="login">/login.jsp</result> 9 </global-results> 10 <action name="LoginAction"class="action.LoginAction"> 11 <result name="success">/success.jsp</result> 12 </action> 13 </package> 14 </struts>
此时运行程序,打开浏览器预览,可以看到登陆界面,输入admin/888888,即可转到登陆成功的界面。
这里解释一下struts.xml中的配置:
package是一个类似对象的组件,name属性指定一个名字,便于被其他package引用;extends属性(可选)是说从继承哪个package的行为,struts-default.xml许多包里都有定义,这里的是源自struts2-core-2.2.3.1.jar;所有的result、action必须配置到package中。
global-results指定所有的全局result,当返回结果为String类型的login(name属性的值)时,进入login.jsp页面。
action指定一个类,当action.LoginAction(调用覆写的execute方法)返回字符串success时,即转到success.jsp页面。