前面讲了jsp servlet javabean 的mvc式架构。SSH的目的是为了强化mvc。首先是jsp和servlet之间。每个jsp都须要一个servlet 。这个加深了程序员没必要要的工做。struts的工做就是为了减小jsp和servlet之间的工做。html
1.首先配置web.xml文件,struts2和struts1启动有很大的不一样,它是经过过滤器来启动的,而struts1是经过加载servlet来启动的,故应向web.xml中加入以下内容:java
<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>
<url-pattern> 里填写要被struts拦截的URL类型。程序员
2.写struts.xml 配置文件。他的目录是 WebContent/WEB_INF/classes/struts.xml (目录classes 不存在就本身建立)。这里因该是默认会找到struts.xml 文件。也能够本身指定配置文件路径。web
<?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.i18n.encoding" value="utf-8"></constant> <package name="default" extends="struts-default"> <action name="login" class="example.structtest" method="execute"> <result name="success">/index.html</result> <result name="error">/error.jsp</result> </action> </package> </struts>
3.建立jsp提交文件login.jspapache
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>用户登陆</title> </head> <body> <form action="login"> <input type="text" name="name"><br/> <input type="text" name="age"><br/> <input type="submit" name="submit" value="登陆"><br/> </form> </body> </html>
这里注意,提交的action 和struts.xml的action 要一致。架构
4.建立structtest.java 所属包是example mvc
package example; import com.opensymphony.xwork2.ActionSupport; public class structtest extends ActionSupport { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String execute() throws Exception { // TODO Auto-generated method stub if (getName().equals("1")&&getAge().equals("1")) { return "success"; } else return "error"; } }
5.建立/index.xml /error.jsp。(这个本身写,再也不贴代码)app
好了,然咱们看一下流程。jsp
1.首先用户打开login.jsp页面。这时候是通过struts2的,由于我在web.xml表示struts的范围是全部文件。ide
2.用户填写好表单,点击提交。这时候被struts获取到。不只如此,还在struts.xml里struts 根据表单的action name找的了struts.xml的action。数据被提交该action所属的struttest.java 类中。
3.数据被处理了。还获得了一个String返回值。这时候又回到了struts.xml 。该文件根据返回值对应的result标签值返回对应的页面。
具体流程(图是网上摘录下来的)
补充:因为struts2版本的之间可能会出现错误。而且,即便你把全部的有关struts2的jar包放入项目中,也会出现错误。本例使用的以下(一共8个,版本2.3.31):