1、MVC思想概述
Servlet作为前端控制器,负责接收客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理;然后调用后端javabean来完成实际的逻辑处理;
最后转发到相应的jsp页面处理显示逻辑。
JSP页面的请求与Servlet交互,Servlet负责与后台的javabean通信。
MVC并不是java语言所持有的设计思想,它是所有的面向对象程序设计语言都应该遵守的规范。
2、Struts 2的下载和安装
(1)下载Struts2的完整版,解压缩,该文件夹包含如下文件结构:
- apps:包含了基于Struts2的示例应用;
- docs:包含了Struts2的相关文档;
- lib:包含了Struts2框架的核心类库,以及他的第三方插件类库;
- src:包含了Struts2框架的所有源代码;
(2)将lib中的部分必须类库复制到web应用的WEB-INF/lib路径下。
(3)编辑web应用的web.xml配置文件,配置Sturts 2的核心Filter。
<!-- 定义Struts2的核心Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 让Struts2的核心Filter拦截所有的请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(4)eclipse中struts.xml文件配置(这里用的Struts2.2.1)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd" >
<struts>
<constant name="struts.custom.il8n.resources" value="mess"/>
<constant name="struts.il8n.encoding" value="GBK"/>
</struts>
3、定义一个Struts2的Action,该Action通常应该继承ActionSupport基类。
为login.jsp页面中登陆表单指定该表单的action为login;
编写一个LoginAction类:
package lee;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String username;
private String password;
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 execute() {
if(getUsername().equals("cui") && getPassword().equals("1234")) {
ActionContext.getContext().getSession().put("user", getUsername());
return SUCCESS;
}
else
{
return ERROR;
}
}
}
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd" >
<struts>
<constant name="struts.custom.il8n.resources" value="mess"/>
<constant name="struts.il8n.encoding" value="GBK"/>
<!-- 所有的Action定义都应该放在package下 -->
<package name="lee" extends="struts-default">
<!-- 下面配置了一个名为login的Action,浏览者可以向该Action发送请求。该Action下还配置了三个result元素
用于指定逻辑视图和物理资源之间的映射,即当前返回input逻辑视图名时,系统跳转到/login.jsp页面 -->
<action name="login" class="org.crazyit.app.action.LoginAction">
<!-- 定义是三个逻辑视图和物理资源的映射 -->
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="welcome">/welcome.jsp</result>
</action>
</package>
</struts>