2014从Struts2开始

Ok,对于我来说2014注定是个不平常的一年,今天开通我的博客,定位JavaEE方向的技术博客,不指望能有多少浏览量,只希望自己能坚持下来。废话不多少,2014从Struts2开始!!

首先Struts2是什么,借用百科上的解释:是Struts1和WebWork技术基础上进行了合并的全新MVC框架。当我刚开始学习JSP+JavaBean+Servlet的时候开始我的第一个小项目,在不久前的一次电话面试中面试官问到我项目中使用的MVC框架是封装好的还是…,当时的我听说过SSH,甚至还不知道Struts还能叫做Struts MVC,哈被自己笑到了。

接着Struts2的工作流程,这个今天考试刚考到,个人觉得学习初期死记住这个流程在后面的学习中更容易深入对Struts2的理解,当然基于应付面试官的必要性也挺大的。

1.客户端提交给Web容器一个申请,通过层层过滤器找到核心控制器StrutsPrepareAndExecuteFilter(当然这个核心控制器也是一个过滤器,配置在web.xml中)
2.由核心控制器将请求交给ActionMapper,来判断请求是否需要调用某个Action
3.如果需要调用Action,则把请求交给ActionProxy,ActionProxy调用ConfigurationManager从配置文件(struts.xml)中读取配置信息
4.实例化ActionInvocation,在调用Action之前经过层层拦截器
5.Action返回结果到JSP或FreeMarker等上,在这过程中也要经过层层拦截器

现在通过一个简单实例来介绍一下Struts2的详细配置:

1.当然要去官网(http://struts.apache.org/downloads.html)下载一个依赖包,解压后有四个文件夹。顾名思义,app应用包里有几个打成war包的示例,docs里面是一些帮助文档,lib下面是进行struts开发所需要的jar包,src下存放的是源码。

2.建项目,我使用的是eclipse,建立一个web项目非常方便。然后导入几个必须以及常用到的jar包到项目WEB-INF下的lib文件夹里,我习惯性先导入这几个:commons-fileupload-1.3.jar;commons-io-2.0.1.jar;commons-lang3-3.1.jar;commons-logging-1.1.3.jar;freemarker-2.3.19.jar;javassist-3.11.0.GA.jar;ognl-3.0.6.jar;struts2-core-2.3.15.1.jar;xwork-core-2.3.15.1.jar

3.编辑web.xml文件,在这一步中,大多数人习惯在解压包里搜索到一个web.xml文件,复制粘贴到WEB-INF下,当然我也是这样干的,随后简单配置一下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <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">
 3     <display-name>Struts Blank</display-name>
 4     <filter>
 5         <filter-name>struts2</filter-name>
 6         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 7     </filter>
 8     <filter-mapping>
 9         <filter-name>struts2</filter-name>
10         <url-pattern>/*</url-pattern>
11     </filter-mapping>
12     <welcome-file-list>
13         <welcome-file>index.html</welcome-file>
14     </welcome-file-list>
15 </web-app>


在这里只配置了一个简单的核心控制器,作用范围/*你们都懂……

4.写个登陆吧login.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <form action="login" method="post">
11     username:<input type="text" name="username" /><br/>
12     password:<input type="password" name="password" /><br/>
13     <input type="submit" value="login" />
14 </form>
15 </body>
16 </html>

再写个登陆成功的响应吧suc.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 username:${username }<br/>
11 password:${password }
12 </body>
13 </html>

5.随后建一个Action,为了省时间我就直接这样干了:

 1 public class LoginAction {
 2     private String username;
 3     private String password;
 4     public String getUsername() {
 5         return username;
 6     }
 7     public void setUsername(String username) {
 8         this.username = username;
 9     }
10     public String getPassword() {
11         return password;
12     }
13     public void setPassword(String password) {
14         this.password = password;
15     }
16     public String execute(){
17         if("tom".equals(username)&&"123".equals(password)){
18             return "success";
19         }else{
20             return "input";
21         }
22     }
23 }


然后是在struts.xml里配置这个Action:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8     <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 9     <constant name="struts.devMode" value="true" />
10 
11     <package name="default" namespace="/" extends="struts-default">
12 
13         <default-action-ref name="index" />
14 
15         <global-results>
16             <result name="error">/error.jsp</result>
17         </global-results>
18 
19         <global-exception-mappings>
20             <exception-mapping exception="java.lang.Exception" result="error"/>
21         </global-exception-mappings>
22 
23         <action name="login" class="com.fit.struts.action.LoginAction" >
24             <result name="success">suc.jsp</result>
25             <result name="input">login.jsp</result>
26         </action>
27     </package>
28 
29     <include file="example.xml"/>
30 </struts>


关于这个配置文件里的一些常量配置我会在下一次详细介绍一下,现在太晚了等会还要上课去……

最后跑一下程序!!

原文地址:https://www.cnblogs.com/I0000/p/3510007.html