struts2应用及配置01

来源:互联网 发布:新申请的域名注册商 编辑:程序博客网 时间:2024/06/01 08:50

为什么要用struts2框架,先谈谈servlet的缺点:

   1、写一个servlet需要在web.xml文件中配置8行,如果一个系统中servlet很多,则会导致 web.xml文件中的内容很多   2、在项目中很多人编辑一个web.xml文件会出现版本冲突的问题   3、在一个servlet中方法的入口只有一个,如果在servlet中写很多方法,这些方法应该传递参数,根据每次请求的参数不一致来判断执行哪个方法   4、servlet中的方法都有两个参数request,response,这两个参数具有严重的容器依赖性,所以在servlet中写的代码是不能单独测试的   5、现在写一个servlet,为注册servlet           ResigterServlet{               public void doPost(){                1、权限的操作            2、获取表单中的数据            3、文件的上传的功能            4、表单上的元素进行验证            5、保存一个用户           }           }    6、如果在表单中的元素很多,在servlet中要想获取表单中的数据,那么在servlet的方法中必要有大量的 request.getParameter代码    7、在一个servlet的属性中声明一个数据,会存在线程安全的问题

Servlet的优点:

因为是最低层的mvc,所以效率比较高

struts2中action是否安全

struts2的action的说明: 
1、action是多实例的,每请求一次将会创建一个对象 
2、是不存在线程安全的问题的:不存在

1.先搭建环境:导jar包

freemarker-2.3.22.jar  ---------- 表现层框架,定义了struts2的可视组件主题,struts2的UI标签的模版,使用FreeMark编写

javassist-3.11.0.GA.jar

 ognl-3.0.6.jar  ----------------- 对象图导航语言(Object Graphic Navigation Language),struts2框架通过其读写对象属性

 struts2-core-2.3.24.jar  -------- struts2的核心类库

xwork.jar  ----------------------- webwork的核心库,struts2在其上构建

commons-fileupload-1.3.1.jar -- 文件上传组件,2.1.6版本后必须加入此文件

commons-io-2.2.jar

commons-lang3-3.2.jar

commons-logging-1.1.3.jar

2.配置web.xml文件

 <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>

注:过滤器就是为了启动struts2框架,接收前端请求,在struts.xml中找到对应action类,并实例化,调用action类中execute方法,通过返回字符串在struts.xml中匹配对应返回界面

3.引入struts.xml文件

从压缩文件Struts2\struts-2.3.24\src\apps\portlet\src\main\resources中找到struts.xml文件,将其复制到src下面

增加<package name="default"  extends="struts-default">
        <action name="helloWorld" class="com.li.bean.HelloWorld">
        <result name="success">/HelloWorld.jsp</result>
        </action>
    </package>

helloWorld为前端求情路径,class为action实例类路径,success是返回字符串

action类HelloWorld

public class HelloWorld extends ActionSupport{
    private String username;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    @Override
    public String execute(){
        if(username.equals("lisi")){
            return "success";
        }
        return null;
    }
}

前端页面from表单

 <form action="helloWorld" method="post">
  姓名<input type="text" name="username">
  <input type="submit" value="提交">
  </form>

这样一次请求回应完成,jsp1-struts.xml-action-struts.xml-jsp2