SSH简略整合(一)
SSH简单整合(一)
新框架的hibernate到4了,spring也到4,不过6月份时候学的时候最新才到3,
因为和别人合作,所以用的是旧版本struts2,hibernate3,spring2.5。hibernate4倒是废弃了很多3的东西。template等等。
框架的东西好久没看之后,回来做东西发现无从下手,很多书都是一丁点的基础都不提,直接的一大堆一大堆的代码,而基础的书,又是很细的知识点。
以下把最基础的基础理清,其实之前写的那个小例子,现在看起来也没什么用。
MVC,C,control,把它看成是业务逻辑的控制和页面跳转的控制,Struts,控制了页面的跳转,不必像以前一样键入整个页面的全称。
引入相关jar包后,在src目录下添加struts.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 开发模式 配置改动生效 无需重启tomcat --> <constant name="struts.devMode" value="true" /> <package name="registration" extends="struts-default"> <action name="user" class="com.my.action.UserAction" > <result name="success"> /registerSuccess.jsp </result> <result name="fail">/registerFail.jsp</result> </action> </package> <!-- http://localhost:8888/SSH_simple --> </struts>
3个框架,都有xml的配置,其实追回到根源,就是xml的解析后的种种处理。
<html> <body> <form action="user.action" method="post"> 用户名:<input type="text" name="username"/><br> 密码:<input type="password" name= "password"/><br> 确认密码:<input type="password" name="repassword"/><br> <input type="submit" value="提交"> </form> </body> </html>
当我们一提交表单的时候,action为user,此时的struts便会找到com.my.action.UserAction这个类,回去看这个类写了什么。
public class UserAction extends ActionSupport{ private String username; private String password; private String repassword; private UserManager um = new UserManagerImpl(); @Override public String execute() throws Exception { User u = new User(); u.setPassword(password); u.setUsername(username); if(um.exist(u)) return "fail"; // TODO Auto-generated method stub um.add(u); return SUCCESS; } }省略一部分代码,ActionSupport为struts提供,当然你可以不用他,你需要构造返回String的函数。但是继承它之后可以用到它的自带的东西。
如果检测到用户存在,那就返回fail。
<result name="fail">/registerFail.jsp</result>
根据result结果,跳转到相应的registerFail.jsp。
有人好久没用之后,调试半天,发现不会跳转,想想,为什么容器会知道你输入这个地址的时候,会去自动调用struts吗,肯定不行,应该是有过滤器的东西,捕获到你输入东西的时候,便使用struts,所以web.xml里面,要记得加上:
<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>
以后,你就可以自定义自己的action,return不同的string,跳转不同的页面,这样的框架很好用吧。框架的恐惧感没了吧。
简易地梳理一下流程,很多细节的东西没说清楚。