ssh到数据库表.docx

上传人:b****7 文档编号:10502892 上传时间:2023-02-17 格式:DOCX 页数:33 大小:644.39KB
下载 相关 举报
ssh到数据库表.docx_第1页
第1页 / 共33页
ssh到数据库表.docx_第2页
第2页 / 共33页
ssh到数据库表.docx_第3页
第3页 / 共33页
ssh到数据库表.docx_第4页
第4页 / 共33页
ssh到数据库表.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

ssh到数据库表.docx

《ssh到数据库表.docx》由会员分享,可在线阅读,更多相关《ssh到数据库表.docx(33页珍藏版)》请在冰豆网上搜索。

ssh到数据库表.docx

ssh到数据库表

MVC是三个单词的缩写,分别为:

模型(Model),视图(View)和控制Controller)。

MVC模式的目的就是实现Web系统的职能分工。

Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。

View层用于与用户的交互,通常用JSP来实现。

Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

MVC工作机制如图:

Struts在SSH框架中起控制的作用,其核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml.主要控制逻辑关系的处理。

hibernate是数据持久化层,是一种新的对象、关系的映射工具,提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制,大大减少数据访问的复杂度。

把对数据库的直接操作,转换为对持久对象的操作。

SPRING是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,面向接口的编程,由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。

这也就是所谓“控制反转”的概念所在:

(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中,起到的主要作用是解耦。

Struts、spring、Hibernate在各层的作用:

1、struts负责web层

ActionFormBean接收网页中表单提交的数据,然后通过Action进行处理,再Forward到对应的网页。

在struts-config.xml中定义,ActionServlet会加载。

2)spring负责业务层管理,即Service(或Manager).。

1、service为action提供统一的调用接口,封装持久层的DAO.

2、可以写一些自己的业务方法。

3、统一的javabean管理方法

4、声明式事务管理

5、集成Hiberante

3)Hiberante负责持久化层,完成数据库的crud操作

hibernate为持久层提供OR/Mapping。

它有一组.hbm.xml文件和POJO,是跟数据库中的表相对应的。

然后定义DAO,这些是跟数据库打交道的类,它们会使用PO。

MVC模式工作原理:

在struts+spring+hibernate的系统中,对象的调用流程是:

JspActionServiceDAOHibernate

数据的流向是ActionFormBean接受用户的数据,Action将数据从ActionFromBean中取出,封装成VO或PO,再调用业务层的Bean类,完成各种业务处理后再forward。

而业务层Bean收到这个PO对象之后,会调用DAO接口方法,进行持久化操作。

配置文件的加载顺序是:

首先是web.xml,然后找到对应的applicationContext.xml,spring管理struts2和hibernate,然后找的是struts-config,最后找的是hibernate.cfg.xml。

下面用一个注册登录的例子来说明ssh与mvc的结合。

先大致浏览一下本案例的截图:

先看一下类图:

在看一下配置文件图:

最后看一下基本页面:

我们先从Jsp页面开始。

1>我们要开发注册、登录两个页面,这属于View层。

注册页面主要代码如下:

登录页面主要代码如下:

2>从上面我们可以看到,页面代码要通过struts.xml(struts2框架)配置文件查找相应的转发页面。

Struts.xml文件代码如下:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""http:

//struts.apache.org/dtds/struts-2.0.dtd">

--下面定义的结果对所有的Action都有效-->

/error.jsp

--指Action抛出Exception异常时,转入名为exception的结果。

-->

/success.jsp

/login.jsp

/success.jsp

/regist.jsp

Struts.xml通过web.xml文件查找到action-servlet.xml.

Web.xml文件代码如下:

xmlversion="1.0"encoding="UTF-8"?

>

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

version="2.4">

firstssh

thisisasimpleexample

webAppRootKey

firstssh.root

contextConfigLocation

/WEB-INF/applicationContext-*.xml,/WEB-INF/action-servlet.xml

log4jConfigLocation

/WEB-INF/log4j.properties

org.springframework.web.util.Log4jConfigListener

--用于初始化Spring容器的Listener-->

org.springframework.web.context.ContextLoaderListener

--定义整合SiteMesh必须的ActionContextCleanUpFilter

struts-cleanup

org.apache.struts2.dispatcher.ActionContextCleanUp

-->

--定义Struts2的FilterDispathcer的Filter-->

struts2

org.apache.struts2.dispatcher.FilterDispatcher

--

struts-cleanup

/*

-->

--FilterDispatcher用来初始化struts2并且处理所有的WEB请求。

-->

struts2

/*

--这是一个产生验证码的servlet-->

img

com.firstssh.servlet.AuthImg

img

/authImg

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

utf-8

encodingFilter

*.action

encodingFilter

*.jsp

hibernateFilter

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

hibernateFilter

*.action

--DWRServlet-->

dwr-invoker

org.directwebremoting.servlet.DwrServlet

debug

true

dwr-invoker

/dwr/*

10

login.jsp

401

/401.htm

403

/403.htm

404

/404.htm

500

/500.htm

Struts.xml在通过Action-servlet.xml查找到RegistAction.java和RegistAction.java。

Action-servlet.xml文件代码如下:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN2.0//EN""http:

//www.springframework.org/dtd/spring-beans-2.0.dtd">

scope="prototype">

scope="prototype">

RegistAction.java代码如下:

packagecom.firstssh.action;

importjava.util.Map;

importcom.firstssh.service.IUserService;

importcom.opensymphony.xwork2.ActionContext;

importcom.opensymphony.xwork2.ActionSupport;

publicclassRegistActionextendsActionSupport

{

privateStringusername;

privateStringpassword;

privateStringemail;

privateStringvercode;

privateIUserServiceuserService;

publicvoidsetUserService(IUserServiceuserService){

this.userService=userService;

}

@Override

publicStringexecute()throwsException

{

Mapsession=ActionContext.getContext().getSession();

Stringver2=(String)session.get("rand");

session.put("rand",null);

if(vercode.equals(ver2))

{if(userService.validateName(username)!

=true){

if(userService.addUser(username,password,email)!

=null)

{

ActionContext.getContext().getSession().put("username",username);

return"success";

}

}

else

{

addActionError("该用户已存在,请换个用户名");

}

}

else

{

addActionError("验证码不匹配,请重新输入");

}

return"input";

}

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

publicStringgetEmail(){

returnemail;

}

publicvoidsetEmail(Stringemail){

this.email=email;

}

publicStringgetVercode(){

returnvercode;

}

publicvoidsetVercode(Stringvercode){

this.vercode=vercode;

}

}

LoginAction.java代码如下:

packagecom.firstssh.action;

importjava.util.Map;

importcom.firstssh.model.User;

importcom.firstssh.service.IUserService;

importcom.opensymphony.xwork2.ActionContext;

importcom.opensymphony.xwork2.ActionSupport;

publicclassLoginActionextendsActionSupport{

privateStringusername;

privateStringpassword;

privateStringvercode;

privateIUserServiceuserService;

publicvoidsetUserService(IUserServiceuserService){

this.userService=userService;

}

@Override

publicStringexecute()throwsException{

Mapsession=ActionContext.getContext().getSession();

Stringver2=(String)session.get("rand");

session.put("rand",null);

if(vercode.equals(ver2)){

Useruser=userService.loginValid(username,password);

if(user!

=null){

session.put("username",username);

return"success";

}else{

addActionError("用户名密码不匹配");

}

}else{

addActionError("验证码不匹配,请重新输入");

}

return"input";

}

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

publicStringgetVercode(){

returnvercode;

}

publicvoidsetVercode(Stringvercode){

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1