学习SSH网上商城的时候了解到SSH框架包括Struts2、Spring和Hibernate。在初步学习中了解到它们三者每个都是一种开源的框架,现从负责页面表示层的Struts2开始进一步的学习。
Struts 2以WebWork(WebWork致力于组件化和代码重用的J2EE Web框架)为核心,采用拦截器的机制来处理用户的请求,它很类似我们在.net中使用的MVC。
和mvc的对应
FilterDispatcher:对应Controller,用户请求首先到达前端控制器FilterDispatcher。FilterDispatcher负责根据
用户提交的URL和struts.xml中的配置,来选择合适的动作(Action),让这个Action来处理用户的请求。
Action:对应Model层,Action负责把用户请求中的参数组装成合适的数据模型,并调用相应的业务逻辑进行真正
的功能处理,获取下一个视图展示所需要的数据。
Result:对应View层,视图结果用来把动作中获取到的数据展现给用户。在Struts2中有多种结果展示方式比较常
用
的是jsp。
实例
在页面上
<form id="registerForm" action="${pageContext.request.contextPath}/user_regist.action" method="post">
</form>
当用过触发form提交后,请求的是regist这个方法,FilterDispatcher根据配置文件的配置找到对应的action方法,配置文件如下:
在Struts配置文件中
<action name="user_*" class="userAction" method="{1}">
<result name="msg">/WEB-INF/jsp/msg.jsp</result>
</action>
其中的user_*表示处理所有已user_开头的请求,其中的method={1}表示的就是匹配到的方法的名字,如在页
面中有
/user_regist.action的请求,则method=regist,class对应的为action的类名,如果要执行regist方法就到
userAction中去找。
在业务层
public String regist(){
//判断验证码程序
//从session中获得验证码的随机值,因为最新生成的验证码是放在session中
String checkcode1= (String)ServletActionContext.getRequest().getSession().getAttribute("checkcode");
if(!checkcode.equalsIgnoreCase(checkcode1)){
this.addActionError("验证码输入错误!");
return "checkcodeFail";
}
userService.save(user);
this.addActionMessage("注册成功!请到邮箱激活");
return "msg";
}
执行完毕相应的方法返回到msg这个页面,对应的msg.jsp需要配置到Struts的配置文件中。
小结
开始学习Java第一个项目就是是BS中的牛腩一样,很多的东西都不清楚,只是跟着做遇到不懂的就查慢
慢的
积累这些技术点,尽量的跟之前在BS中学到的联系比较。