zoukankan      html  css  js  c++  java
  • 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>


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

    最后跑一下程序!!

  • 相关阅读:
    字符缓冲流,properties类,序列化流与反序列化流,打印流
    字节输入输出流,字符输入输出流,转换流,字节缓冲流
    ListFiles(),文件过滤器与递归
    File
    Beta冲刺第二周王者荣耀交流协会第三次会议
    第九周PSP
    Beta周王者荣耀交流协会第六次会议
    第八周PSP
    王者荣耀交流协会-小组互评Alpha版本
    小组互评Alpha版本
  • 原文地址:https://www.cnblogs.com/I0000/p/3510007.html
Copyright © 2011-2022 走看看