Struts学习(一)
1.简介(Struts1)
struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
2.流程
首先用户通过ie向服务器发请求,服务器接收到请求以后,交给Apache提供的ActionServlet类处理,该类会去找相应的配置文件(Struts-config.xml)得到要由哪个Action处理该请求,处理完后返回,将数据带给JSP显示.
2.配置
2.1配置ActionServlet
ActionServlet是一个标准的Servlet,所以和一般的servlet配置一样,需要注意的是:
1.需要初始化配置<init-param>,这个配置用于去找相应配置文件的Action。
2.需要添加<load-on-startup>标签,用于自启动Servlet。
3.将映射匹配写成*.do,用于匹配所有已.do为结尾的HTTP请求,这是Struts的规范。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>struts11</display-name>
<!-- 配置一个ActionServlet -->
<servlet>
<servlet-name>ActionServlet</servlet-name>
<!-- Apache Struts包下的ActionServlet类路径 -->
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!-- 初始化,去找struts-config.xml配置文件 -->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<!-- 将ActionServlet配置成自启动Servlet -->
<load-on-startup>2</load-on-startup>
</servlet>
<!-- ActionServlet映射 -->
<servlet-mapping>
<servlet-name>ActionServlet</servlet-name>
<!-- 匹配所有以.do为结尾的HTTP请求 -->
<url-pattern>*.do</url-pattern>
</servlet-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.2配置ActionForm
ActionForm就是配置JavaBean对象,该JavaBean对象必须继承ActionForm,且ActionForm 的属性必须与JSP 页面的表单域相同.也就是说用户带过来的域中的属性名要与Bean对象属性名一致,这样才能将数据封装到Bean对象中.
package cn.itcast.struts;
import org.apache.struts.action.ActionForm;
//javaBean对象
public class UserFormBean extends ActionForm{
private String username;
private String password;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
JavaBean对象需要在struts-config.xml中配置,用于被Action对象调用进行封装.name属性相当于一个id,当Action调用时就使用这个name属性,type表示该类的类路径。代码在2.3配置Action中有.
2.3配置Action
简单配置Action有2个步骤:1.写一个类继承Action,且重写execute()方法.如:
package cn.itcast.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class Struts11 extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UserFormBean user = (UserFormBean) form;
System.out.println(user.getUsername());
System.out.println(user.getEmail());
System.out.println(user.getPassword());
return super.execute(mapping, form, request, response);
}
}
其中的form参数封装了JavaBean对象.该配置在struts-config中定义.如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<!--JavaBean对象,用于将用户传过来的数据进行分装 -->
<form-beans>
<form-bean name="UserFormBean" type="cn.itcast.struts.UserFormBean"></form-bean>
</form-beans>
<!--action映射,如果用户发送的请求是"Register"的话,使用type中的类进行处理,数据的封装类为用name表示 -->
<action-mappings>
<action path="/Register" type="cn.itcast.struts.Struts11" name="UserFormBean"></action>
</action-mappings>
</struts-config>
总结
今天简单的学习了一下struts1,感觉还行,明天继续.