【笔记】Struts2学习笔记(一)--简单项目搭建及运行机制

jre与jdk:

jre不包含调试

jdk包含调试

Struts:

Struts1  :看可以不学,

Struts2  :    

二者无任何联系。

 

Struts1Struts2的区别:

Struts1action和具体的Struts的环境绑定,离不开Servlet环境

Struts2代替掉servlet,只需一个java类即可。

Struts1Action对象只有一个,任何人访问都只有一个,就需要做很好的线程同步的控制,Struts2每次访问一个Action时都会New一个对象出来,永远不会有线程同步的问题。

Sturts2环境搭建:

Struts.xml放在src根目录下

Struts2学习目录:


实验软件下载

1.下载struts2.1.6 http://struts.apache.org/download.cgi#struts217 (选择下载full distribution)

2.下载myeclipse,http://www.myeclipseide.com 

3.下载tomcat,http://tomcat.apache.org 

4.下载xwork,http://www.opensymphony.com/xwork (要注意的是下载与struts2.1.6的对应版本,即2.1.2)

安装与设置

1. 解压struts2.1.6,假设解压后位于d:\struts2目录

2. 安装MyEclipse,任何版本都可以

3. 假设你已经安装好jdk和tomcat了,如d:\tomcat

Hello World项目

一、搭框架

1.新建项目

1)打开myeclipse

2)File-->New project-->Myeclipse-->Java Enterprise Projects-->Web Project

3)项目名称:Struts2_0100_Introduction

4)选择JavaEE5.0以上,这样可以引入JSTL等。

 

注意:最好选Java EE5.0以上,这样可以引入JSTL

2.设定Server部署Tomcat

1)Window-->Preferences-->Myeclipse-->Servers-->Tomcat-->Tomcat7.0

2)选择Tomcat home directory

3)选择snable

4)finish

 

3.设定JDK环境

1)Window-->Preferences-->Java-->Installed JREs打开后如下图

 

红线是Myeclipse自带的JDK。如果不放心的话,可以添加自己下载的JDK

2)或者如果没有对应的JDK(不是JRE)的话:Add-->Standard VM-->next

3)选择自己安装的JDK对应的Directory

 

4)点击finsh完成后,选中自己添加的JDK即将刚刚设定的JDK设为默认。如下图

 

二、建立第一个Struts2的程序(下载Struts2或者直接从myeclipse导入)

1.方法一:

1)找到自己下载的Struts2 3.16.1jar包解压后,在Struts2.3.16.1目录下对应的apps目录

2)解压struts2-blank.war(直接用解压软件解压)

3)Copy对应的struts2-blank-->WEB -INF-->libjar文件到WebRoot-->WEB-INF-->lib,需要除junitSpring-test之外的所有文件,其中commoms-iojar包会在文件上传和下载时需要,其他为必须。

4)Copy对应的struts.xmlsrc目录,在package explorer视图进行操作

5)注释掉struts.xml的多余内容,(是注释不是删掉,以便以后自己写的时候做参考)(注释Struts标签内的信息)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  <--
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

    <include file="example.xml"/>
 -->
    <!-- Add packages here -->

</struts>

6)建立Hello.jsp文件

7)*修改jsp文件的默认编码属性Window-->Prederences-->web-->jspfiles-->设为Chinese,National Standard

8)在struts.xml中照原配置进行对应的配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
  <--
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

    <include file="example.xml"/>
 -->
    <!-- Add packages here -->
   <package name="default" namespace="/" extends="struts-default">
        <action name="hello">
            <result>
		       /Hello.jsp
            </result>
        </action>
    </package>
</struts>


9)修改对应的web.xml,建立struts2的filter(参考struts自带的项目)可以先将之前解压的struts2-blank-2.1.6.war里的WEB-INF-->web.xml拷贝过来进行参考。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping></web-app>

2.方法二:(对于Myeclipse)

1)右键项目名称-->Myeclipse-->Add Struts2 Capabilities




这样可以自动导入Struts的jar包、修改Web.xml、添加Struts.xml。

三、运行项目

1.可以首先部署到tomcat上运行项目

2也可以项目右键debug as-->myeclipse server application,选择刚刚建立好的server

    注意:输入访问路径前一般先输入http://127.0.0.1:8080回车,测试tomcat是否正常。

                输入http://127.0.0.1:8080/Struts2_0100_Introduction直接回车会报错。因为在struts.xml中namespace="/"

                namespace和访问的路径一一对应,所以/与路径一一对应

      http://127.0.0.1:8080/Struts2_0100_Introduction/hello.action 或者 http://127.0.0.1:8080/Struts2_0100_Introduction/hello回车成功

Struts2的运行机

a)用户输入URL地址:http://localhost:8080/Struts2_0100_Introduction/hello URL地址的请求通过HTTP协议发送给Tomcat

b)Tomcat收到请求后,知道请求的是名为Struts2_0100_Introductionweb application,Tomcat将名为Struts2_0100_Introductionweb application交给对应的程序去处理,

c)读这个web application对应的web.xml文件,于是发现了一个配置:

  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping></web-app>

         d)filter会过滤所有的URL地址,当输入hello时,改地址就会被org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter接收到,接受到后对地址进行处理:首先看namespace,(namespace与访问的路径是一一对应的),从Struts.xml查到一个namespace"/",然后地址“/”后是Hello,就会差有没有一个actionhello.若有就会找里面对应的result是谁,找到Hello.jsp,反馈给大家。




设计模式的好处:可扩展性。

Struts2的好处把请求和最后的结果(视图)分开,而不是写死。分开的好处是可以随时更换成别的视图,更灵活。

设计模式和Struts随操作方面比普通方式更复杂,但增强了灵活性。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值