一 Struts1:
缺点:
Struts1与Servlet API的严重耦合,难于测试。
Struts1代码严重依赖于Struts1 API,属于侵入性框架。
二 Struts2:
传统的Struts1的基础上,融合了另外的一个优秀的Web框架WebWork的Struts2。
① 创建传统web项目,默认配置了本机tomcat
② WEB-INF下创建classes,lib文件夹,并将他们的功能路径在项目中配好。
classes:
用于存放项目生成的 xxxx.class 文件;
lib:
将Struts2需要的jar包导入其中
③ web.xml中配置好filter(拦截器):
<!--本质是filter过滤器-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!--拦截所有“/XXXX”请求-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
④ src目录下创建struts.xml:
IDEA提示检测到struts2框架
<?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固定写法,名字默认,/识别,继承默认设置-->
<!--获取动作“index”,返回index.jsp页面-->
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="index">
<result>index.jsp</result>
</action>
</package>
</struts>
⑤进入loclhost:8080
⑥
⑦struts.xml配置跳转
//<package>中配置动作标签<action>需要name,class,*method*
//结果集<result>中name用于接收show方法返回的参数return show;
<action name="showProduct" class="com.wr.struts_2demo.action.ProductAction" method="show">
<result name="show">show.jsp</result>
</action>
⑧show.jsp网页解析
${}EL表达式:
Struts通过getProudct()方法返回product对象,然后再把product对象通过request.setAttribute("product", product) 放在"product" 这个key上,这样就方便EL表达式去取出来了
⑨sumbit.jsp网页解析
input标签中 name属性 的区别
submit后后台得到的数据不同
Ⅰ name="product.namess"
后台得到的是一个对象product及它一个namess属性的值
Ⅱ name="namess"
后台接受的是变量namess的值,用getparameter接收
⑧中文乱码问题
jsp提交数据的时候,必须是UTF-8编码的
struts拿到数据后进行UTF-8解码
服务端跳转到jsp进行显示的时候,要指定浏览器使用UTF-8进行显示
UTF-8可以换成GBK或者GB2312,但是必须统一,不能混用
添加字符编码
更改提交方式为post
更改struts.xml