zoukankan      html  css  js  c++  java
  • SSH框架整合

    1.所需要的jar包

    容易丢失的是struts中的spring插件struts2-spring-plugin-2.2.3.1.jar

    struts的Action由spring的对象工厂负责创建时使用的包asm-3.1.jar

    2.web.xml配置

     1 <?xml version="1.0" encoding="UTF-8"?>
    2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    4 <!-- spring 编码过滤 -->
    5 <filter>
    6 <filter-name>encodingFilter</filter-name>
    7 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    8 <init-param>
    9 <param-name>encoding</param-name>
    10 <param-value>utf-8</param-value>
    11 </init-param>
    12 </filter>
    13 <filter-mapping>
    14 <filter-name>encodingFilter</filter-name>
    15 <url-pattern>/*</url-pattern>
    16 </filter-mapping>
    17 <!-- 初始化spring上下文ApplicationContext -->
    18 <listener>
    19 <listener-class>
    20 org.springframework.web.context.ContextLoaderListener
    21 </listener-class>
    22 </listener>
    23 <context-param>
    24 <param-name>contextConfigLocation</param-name>
    25 <param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
    26 </context-param>
    27
    28 <welcome-file-list>
    29 <welcome-file>index.jsp</welcome-file>
    30 </welcome-file-list>
    31 <login-config>
    32 <auth-method>BASIC</auth-method>
    33 </login-config>
    34 <!-- struts2过滤器 -->
    35 <filter>
    36 <filter-name>struts2</filter-name>
    37 <filter-class>
    38 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    39 </filter-class>
    40 </filter>
    41 <filter-mapping>
    42 <filter-name>struts2</filter-name>
    43 <url-pattern>/*</url-pattern>
    44 </filter-mapping>
    45 </web-app>

    3.Hibernate相关

    配置hibernate.cfg.xml,如下

     1 <?xml version='1.0' encoding='UTF-8'?>
    2 <!DOCTYPE hibernate-configuration PUBLIC
    3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

    5
    6 <!-- Generated by MyEclipse Hibernate Tools. -->
    7 <hibernate-configuration>
    8 <session-factory>
    9 <property name="show_sql">true</property>
    10 <property name="format_sql">true</property>
    11 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    12 <property name="connection.url">jdbc:mysql://localhost:3306/hib</property>
    13 <property name="connection.username">root</property>
    14 <property name="connection.password">123456</property>
    15 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    16 <property name="myeclipse.connection.profile">com.mysql.jdbc.Driver</property>
    17 <mapping resource="com/domin/User.hbm.xml"/>
    18 </session-factory>
    19 </hibernate-configuration>

    创建com.domin.User类,添加User.hbm.xml。

     1 <?xml version="1.0" encoding="UTF-8"?>
    2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD3.0//EN"
    3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

    4 <hibernate-mapping>
    5 <class name="com.domin.User" table="USERS">
    6 <id name="id" type="java.lang.Integer">
    7 <column name="ID"/>
    8 <generator class="identity"/>
    9 </id>
    10 <property name="username" type="string" column="USERNAME"/>
    11 <property name="password" type="string" column="PASSWORD"/>
    12 </class>
    13 </hibernate-mapping>

    4.创建Dao类

    (1).BaseDao 使用spring封装的HibernateDaoSupport,把事务管理交给spring

    1 package com.dao;
    2 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    3 public class BaseDao extends HibernateDaoSupport{
    4 //..目前还没有写什么
    5 }

    (2).UserDao 继承BaseDao 处理基本的数据库操作

     1 package com.dao;
    2
    3 import java.util.List;
    4 import com.domin.User;
    5 public class UserDao extends BaseDao{
    6 public User getUserByUsername(String username){
    7
    8 List list=getHibernateTemplate()
    9 .find("from User where username=?",username);
    10 if(list.size()==0) return null;
    11 return (User)list.get(0);
    12
    13 }
    14 public User getUser(String username,String password){
    15 List list=getHibernateTemplate()
    16 .find("from User where username=? and password=?",username,password);
    17 if(list.size()==0) return null;
    18 return (User)list.get(0);
    19
    20 }
    21 }

    5.创建service类 以Dao对象为属性,处理与业务相关的操作

     1 package com.service;
    2
    3 import com.dao.UserDao;
    4 import com.domin.User;
    5
    6 public class UserService {
    7 private UserDao userDao;
    8
    9 public UserDao getUserDao() {
    10 return userDao;
    11 }
    12
    13 public void setUserDao(UserDao userDao) {
    14 this.userDao = userDao;
    15 }
    16 //判断用户名是否存在
    17 public boolean isExists(String username){
    18 User user=userDao.getUserByUsername(username);
    19 return user!=null;
    20 }
    21 //判断用户名、密码是否正确
    22 public boolean isExists(String username,String password){
    23 return userDao.getUser(username, password)!=null;
    24 }
    25 }

    6.Struts中登陆功能的实现,login.jsp如下

     1 <%@ page  language="java" pageEncoding="UTF-8"%>
    2 <%@ page isELIgnored="false" %>
    3 <%@ taglib uri="/struts-tags" prefix="s" %>
    4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    5 <html>
    6 <body>
    7 <br/>通用错误:
    8 <s:actionerror/>
    9 <br/>
    10 <s:form method="post" action="login!login.action" >
    11 用户名<input type="text" name="user.username" />
    12 ${errors['user.username'][0]}
    13 <br/>
    14 密码<input type="password" name="user.password" />
    15 ${errors['user.password'][0]}
    16 <br/>
    17 <input type="submit" value='登陆' />
    18 <input type="reset" value='重置' />
    19 </s:form>
    20 </body>
    21 </html>

    7.处理的Action

     1 package com.control;
    2
    3 import org.springframework.transaction.annotation.Propagation;
    4 import org.springframework.transaction.annotation.Transactional;
    5 import com.domin.User;
    6 import com.opensymphony.xwork2.Action;
    7 import com.opensymphony.xwork2.ActionSupport;
    8 import com.service.UserService;
    9
    10 public class Login extends ActionSupport{
    11 private User user;
    12 private UserService userService;
    13 //省略user,userService的get、set方法
    14 //声明式事务管理
    15 @Transactional(propagation=Propagation.REQUIRED)

    16 public String login() throws Exception {
    17 // TODO Auto-generated method stub
    18 if(userService.isExists(user.getUsername(),user.getPassword()))

    19 return "success";
    20 else{
    21 addActionError("用户名或密码错误!");
    22 return Action.INPUT;
    23 }
    24 }
    25 }

    8.spring的配置文件applicationContext.xml配置dao类,service类以及控制器类Action

    spring的配置中整合了hibernate数据库配置和Struts中Action配置

     1 <?xml version="1.0" encoding="UTF-8"?>
    2 <beans
    3 xmlns="http://www.springframework.org/schema/beans"
    4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5 xmlns:p="http://www.springframework.org/schema/p"
    6 xmlns:aop="http://www.springframework.org/schema/aop"
    7 xmlns:tx="http://www.springframework.org/schema/tx"
    8
    9 xsi:schemaLocation="http://www.springframework.org/schema/beans
    10 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    11 http://www.springframework.org/schema/tx
    12 http://www.springframework.org/schema/tx/spring-tx.xsd
    13 http://www.springframework.org/schema/aop
    14 http://www.springframework.org/schema/aop/spring-aop.xsd
    15 "

    16 >
    17 <bean id="sessionFactory"
    18 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    19 <property name="configLocation"
    20 value="classpath:hibernate.cfg.xml">
    21 </property>
    22 </bean>
    23 <bean id='userDao' class="com.dao.UserDao">
    24 <property name="sessionFactory" ref='sessionFactory'/>
    25 </bean>
    26 <bean id='userService' class="com.service.UserService">
    27 <property name="userDao" ref='userDao'/>
    28 </bean>
    29 <bean id='transactionManager'
    30 class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    31 <property name="sessionFactory" ref="sessionFactory"/>
    32 </bean>
    33 <tx:annotation-driven transaction-manager="transactionManager"/>
    34 <aop:aspectj-autoproxy proxy-target-class="true"/>
    35 <!-- 以下bean对应于一个登陆处理的Action -->
    36 <bean id="login" class="com.control.Login" scope="prototype">
    37 <property name="userService" ref='userService'/>
    38 </bean>
    39 </beans>

    以上为Login注入了所需要的userService对象,使用scope="prototype"每次访问Action都新建一个实例,在Action中加入声名式事务管理,可以在Action中对Hibernate事务进行自动化管理。

    9.struts.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    3 <struts>
    4 <constant name="struts.objectFactory" value="spring"/>
    5 <package name="default" extends="struts-default">
    6 <action name='login' class="login">
    7 <result name='success'>/success.jsp</result>
    8 <result name='input'>/login.jsp</result>
    9 </action>
    10 </package>
    11 </struts>

    其中Action的class属性必须与spring配置文件中bean的id值相同
    10.测试结果

    http://localhost:8080/ssh/login.jsp

    输入tazi 123后 和输入tazi 1234后分别如下左右

      

    因为数据库中保存的用户名和密码是tazi/1234







  • 相关阅读:
    vscode 全局安装和配置 stylelint 像 webstorm 等 ide 一样来检查项目
    vscode 和 atom 全局安装和配置 eslint 像 webstorm 等 ide 一样使用 standard标准 来检查项目
    visual studio code (vscode)像 sublime text 的 ctrl+d 一样多光标选中
    intellij idea pycharm phpstorm webstorm 使用 FiraCode 作为编程字体,更新后字符乱码问题解决
    cmder 使用 linux bash 管道符 | grep 来筛选文件
    intellij idea pycharm phpstorm webstorm 这些编辑器像 sublime text 一样使用 ctrl d 来操作光标多选。
    前端开发中js变量定义及命名的规范建议
    论JavaWeb前后端分离放弃jsp
    ORACLE client 11g r2 客户端开发环境配置
    Javascript中document.execCommand()的用法
  • 原文地址:https://www.cnblogs.com/tazi/p/2301234.html
Copyright © 2011-2022 走看看