struts2入门,从下载到简单的配置

来源:互联网 发布:网络电视直播在线看 编辑:程序博客网 时间:2024/06/13 08:41

最近在学习Struts2框架,写一篇博客供自己复习和刚入门的朋友学习。

由于是新人第一次写且文笔不太好,而且写的东西过于基础,大佬收下留情委屈

由于是使用篇,就不写偏概念的东西了,个人还是比较喜欢撸起袖子干事情

欢迎大家提出意见修改~


一、Struts2的下载:

1、首先是Struts2的官网:http://struts.apache.org/

2、然后是点击Download(ps:可能响应速度比较慢,耐心等待即可)


3、点击下图中的方框内的超链接下载(ps:当前最新的版本是2.5.10.1,由于我不是很喜欢用最新的的软件和框架所以我下载的是2.3版本的)



4、下载好并解压后打开目录下的apps文件夹(ps:因为是war包所以可以用解压软件打开,可以自行百度下)


我们选择struts2-blank.war解压



5、我们暂时先不管解压的这个东西,这个东西是struts2的一个空白的模板,我们先打开Eclipse,创建动态的web项目

然后将我们打开刚刚解压struts2-blank.war的文件中的WEB-INF文件夹(这是装java代码文件和配置文件)


由图可以看到:

lib文件夹:是装的struts2框架的一些封装好的代码架包

src文件夹:是装struts2配置和java源文件的文件夹(图片描述有点出入,不修图了吐舌头)。

还有的就是web.xml的配置


二、struts2在Eclipse上的配置和使用

1、打开刚刚创建的web项目我们先打开struts2里刚刚我们解压的文件夹里的lib文件

将里面所有架包都导入web项目的lib里(ps:这里都是java web的基础就一笔带过)


2、我们先配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>sturts2_web</display-name>    <!-- Struts2的web.xml配置 -->  <filter>  <!-- 和Java web的配置过滤器的方法相同 -->  <filter-name>struts</filter-name>  <!-- filter-class里放Struts2的核心过滤器类 -->  <!-- 等等上图如何寻找这个路径 -->  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>    <filter-mapping>  <!-- 这里的filter-name必须和上面的filter里的一样 -->  <filter-name>struts</filter-name>  <!-- 所有的网页都会被struts2拦截下来处理 -->  <url-pattern>/*</url-pattern>  </filter-mapping>    <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list></web-app>

因为我是用的2.3的struts不是最新版的,所以找filter反射类的路径不太一样


这是在我导入架包后Eclipse自动在web项目下的架包管理里的,因为我Eclipse的设置问题,所以我们看到的是一层一层的包

正常方式的找到文件右键,选择复制文件限定名,然后把复制出的文本后的.class去掉,就是我们刚刚的那个filter-class

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


3、在我们之前解压的struts2的空白项目的web-inf的java下面找到struts.xml文件复制到web项目下的src下

(ps:一定只能在src下不能放在src的任何pakage下)

也可以自己在src的目录下配置一个struts.xml

建议:不要去背这些代码,背起来太困难我们需要知道怎么用就好了,直接复制粘贴就好哈哈(有多余的时间可以研究下)

以下是struts.xml的路径显示


以下是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>    <!-- 这是动态访问action中的某个方法,下一个博客详细讲解 -->    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <!-- 开发者模式,true是打开,在改完java代码后不需要重新启动服务器 -->    <constant name="struts.devMode" value="true" />    <!-- struts2的固定写法pakage -->    <!-- name等于default必须这么写 -->    <!-- extends等于struts-default必须这么写才能找到struts2框架的一些方法 -->    <package name="default" namespace="/" extends="struts-default">                <!-- 默认的action名字,当请求的action名字找不到的时候会去找名字为index的action -->        <default-action-ref name="index" />        <!-- 当任何action或者说只要返回值为result中name的值就会请求转发到一下的路径 -->        <!-- 接收全局的返回值 -->        <global-results>            <result name="error">/WEB-INF/jsp/error.jsp</result>        </global-results>        <!-- 异常处理 -->        <global-exception-mappings>            <!-- 当发生java的异常的时候就会返回error,配合上面的全局返回值使用,能达到报错就跳转到开发人员自定的页面 -->            <!-- 提高用户的体验度 -->            <exception-mapping exception="java.lang.Exception" result="error"/>        </global-exception-mappings>        <!-- 以下是重点 -->        <!-- action是请求的事件,哎我也不会描述了,就是类似于java web中 *.do这种写法-->        <!-- name等于Login_*这种写法和java web的*.do的写法是差不多的 -->        <!-- 但是这里的*配合后面的method="{1}"是寻找class映射出的类中的方法,*和方法的名字必须一样 -->        <!-- class="映射类的路径" 测试是否对的就按着Ctrl将鼠标移动在该路径上,如果出现下划线说明映射成功 -->        <!-- method="{1}" 是配合name中*的写法来寻找映射类中的方法 -->        <action name="Login_*" class="action.LoginAction" method="{1}">            <!-- 映射方法有返回值 如果返回"ok"就请求转发ok.jsp的页面 -->            <result name="ok">/page/ok.jsp</result>            <!-- 如果方法返回"no"就请求转发no.jsp -->            <result name="no">/page/no.jsp</result>        </action>    </package></struts>

以下是action.LoginAction映射类中的java代码

package action;import java.util.Random;public class LoginAction {//注意这里的方法名和请求的Login_*中后面*所替代的相同public String login(){//做了一个随机数等等做判断用Random ra=new Random();if(ra.nextInt()%2==0){//随机数是偶数就返回okreturn "ok";}else{//随机数不是偶数就返回noreturn "no";}}}

以下是index.jsp的代码

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>    <!-- 这下面的是一串配置路径的代码,不然以后将jsp文件放在某个文件夹下可能会找不到该jsp,比如刚刚的ok.jsp我是放在page文件下的 -->    <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><!-- 和上面那串路径的代码一起的 注意放在的位置,可以配置下jsp的模板 --><base href="<%=basePath%>"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><!-- 这里的href里的路径就是刚刚action里面的name属性 name="Login_*" 现在*变成了login表示要去寻找action映射类中的login方法 --><a href="Login_login">点击我向struts2发送请求</a></body></html>

测试结果我就不贴上来了吐舌头

这是最基础的Struts2的配置教程,给刚入门的朋友提供以下配置基础

如果需要深入的了解struts2的话网上有许多的代码和一些功能

拦截器,校验器,防止重复提交等常用的

还有一些struts2的常用的xml配置

大家可以上百度查查学习下,以后我也会慢慢的写一些基础教程(我也就懂点基础哈哈)

有什么说的不足的忘大家点出来,大家互相进步。