说老实话,博客这玩意也不见得比做笔记好的到哪里去,只能说看个人吧,我忘性比较大,也比较浮躁,别人都说struts2也快过时了,现在都流行用SpringMVC,都说Hibernate太笨重了,都流行用MyBatis。没啥意思,无聊学一学,毕竟我现在只是一个实施,啥时候工作又给丢了还不一定。加油吧小伙子。。。
回归主线:什么是框架?
上述是Google到的一点子介绍,什么是框架呢?微观上看,就是由一个又一个的类构成一个又一个的包,一个又一个的包再构成框架。而宏观上看呢?半成品的项目.我们需要执行什么业务.为框架填写业务逻辑即可。(都是我抄来的)
我们经常说三大框架,反正我是听烦了,妈的,老子一个项目都没做过,还整天给老子说什么项目框架,草。
以前的SSH:Struts Spring Hibernate
现在的SSM:Spring,SpringMVC、MyBatis
Struts2到底是个什么玩意?
其实Struts2这玩意和Struts1没有任何关系,Struts2其实就是xwork框架。
虽然现在Struts惨淡的一比,但是毕竟也是三大框架之一,也有辉煌灿烂的昨天。在很久很久以前用Struts1进行开发的人太多了,而xwork框架架构虽然比Struts1好,但是没人愿意用啊(就像习惯了Servlet,突然出现了一个类似与Servlet的玩意,但是比Servlet要好那么一丢丢,你愿意再去学习新的API吗?)。
最后xwork框架的作者没办法,只能借Struts的名声把自己的框架推广出去,这些陈年往事谁知道是真是假,听听就得了
三大框架的作用?
简化我们的开发.降低开发成本.提高开发效率
目前学习的Struts2框架属于WEB层框架,它的优势:
1.不用侵入性比较高的Servlet.可以直接写普通java类作为处理请求逻辑的处理类.这样更易于测试.(瞎扯淡)
2.整合了一些之前需要手动来做的功能. 后台验证,表单回显,自动将表单参数封装,防止表单重复提交…如果不够用我们还可以扩展框架的功能.
下面进入正题,编写一个第一个Struts项目:struts_hello,项目的具体结构如下图所示:代码量少了不少,主要还是配置:
1、第一步:引入jar包:
2、第二步:创建一个Action类:HelloAction:
package com.hardstudy.action;
public class HelloAction {
public String execute(){
System.out.println("hehe zhangyue!!!");
return "success";
}
}
3、第三步:核心配置文件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>
<package name="struts" namespace="/fuck" extends="struts-default">
<action name="HelloAction" class="com.hardstudy.action.HelloAction" method="execute">
<result name="success" type="dispatcher">/index.jsp</result>
</action>
</package>
</struts>
需要注意的是,这里的struts.xml中配置action比之前的那么mini struts要复杂了一点,之前都是在默认的路径下,现在可以指定这个action所在的包了,方便统一管理。
4、第四步:在web.xml文件中注册一个指定的Struts过滤器:StrutsPrepareAndExecuteFilter:
<?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">
<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>
5、第五步:测试,在浏览器地址栏中输入:http://struts_hello/fuck/HelloAction.action,其中”/fuck”是在package的namespace中配置的信息,然后提交:
问题1:有时候在地址栏中输入了正确的URL路径,还是出现错误:
总结一下:框架的作用就是帮助我们做了很多我们可以不用做的繁琐的事情,这个基础的helloworld比之前那一个mini struts的代码量要少了不少,重要的东西都在配置文件中,struts是这样,spring也是这样(当让它可以使用注解)。下面我可能会着重的介绍一下struts.xml中的各项配置,以求让自己可以明白。
总结一下整个流程:
导入jar包
Action类(请求处理类)
核心配置文件:struts.xml
web.xml配置过滤器
测试