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,跳转不同的页面,这样的框架很好用吧。框架的恐惧感没了吧。


    简易地梳理一下流程,很多细节的东西没说清楚。