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>


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

    最后跑一下程序!!

  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/I0000/p/3510007.html
Copyright © 2011-2022 走看看