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页面。

原文地址:https://www.cnblogs.com/bigbangtop/p/7092980.html