1. 程式人生 > >MyEclipse8.5配置整合SSH框架 簡單登入驗證功能

MyEclipse8.5配置整合SSH框架 簡單登入驗證功能

>部落格已統一遷移到點選開啟<

學習SSH框架整合的時候出現了很多問題 折騰了三天終於解決了 記錄下來!

以下內容包括SSH框架整理、簡單登陸寫法、部分錯誤解決方法。

一. 框架整合步驟 

1.1 建立webproject

File->New->Web Project 取名 直接Finish就好了

1.2 整合Spring

右鍵專案->MyEclipse->Add Spring Capabilities...

然後如圖所示 選擇這五個 然後Finish 就可以了

1.3 整合 Hibernate

右鍵專案->MyEclipse->Add Hibernate Capabilities...

然後如圖所示 點選NEXT 下一步


然後選擇如下圖 然後NEXT


然後選擇如下圖 然後NEXT


然後選擇如下圖 然後NEXT


然後選擇如下圖 然後Finish 完成


Hibernate整合完成!

1.4 整合Struts2 

右鍵專案->MyEclipse->Add Struts Capabilities...

然後如圖所示 點選NEXT Finish完成


到這裡 Spring3+Struts2+Hibernate3就整合完成了!


二.簡單登陸功能

1. 登陸頁面JSP

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>

	<body>
		<form action="Login.action" method="post">
			<p>
				<input type="text" name="username" />
			</p>
			<p>
				<input type="password" name="password" />
			</p>
			<p>
				<input type="submit" value="Login" />
			</p>
		</form>

	</body>
</html>
2.LoginAction寫法 【我這裡直接在struts.xml指定了方法名 不需要使用execute()】
<div>package com.james.action;</div><div>
</div><div>
import javax.servlet.http.HttpServletRequest;</div><div>
</div><div>import org.apache.struts2.ServletActionContext;</div><div>
</div><div>import com.james.service.LoginService;</div><div>
</div><div>public class LoginAction {</div><div>
</div><div> private HttpServletRequest request;
 private LoginService loginService;</div><div>
</div><div> public LoginService getLoginService() {
  return loginService;
 }</div><div>
</div><div> public void setLoginService(LoginService loginService) {
  this.loginService = loginService;
 }</div><div>
</div><div> public String Login() {
  request = ServletActionContext.getRequest();
  String UserName = request.getParameter("username");
  String PassWord = request.getParameter("password");
  return loginService.Login(UserName,PassWord);
 }
}</div>

3.LoginService介面和LoginServiceImpl寫法 
//LoginService
package com.james.service;

public interface LoginService {
 //Login
 public String Login(String userName, String passWord);
}

//LoginServiceImpl
package com.james.service.impl;


import com.james.dao.LoginDao;
import com.james.service.LoginService;


public class LoginServiceImpl implements LoginService{
 
 private LoginDao loginDao;
 
 public LoginDao getLoginDao() {
  return loginDao;
 }


 public void setLoginDao(LoginDao loginDao) {
  this.loginDao = loginDao;
 }


 public String Login(String userName, String passWord) {
  // TODO Auto-generated method stub
  return loginDao.Login(userName,passWord);
 }
}



4.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>
<package name="LoginAction" extends="struts-default">
	<action name="Login" class="com.james.action.LoginAction" method="Login">
		<result name="success">/WEB-INF/web/LoginSuccess.jsp</result>
		<result name="error">/index.jsp</result>
	</action>
</package>
</struts> 
5.applicationContext.xml配置檔案
<pre class="html" name="code"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<bean name="loginDao" class="com.james.dao.impl.LoginDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<bean name="loginService" class="com.james.service.impl.LoginServiceImpl">
		<property name="loginDao" ref="loginDao"></property>
	</bean>
	<bean name="login" class="com.james.action.LoginAction" scope="prototype">
		<property name="loginService" ref="loginService"></property>
	</bean>
	<!-- 
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="oracle.jdbc.OracleDriver">
		</property>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:JamesOracle">
		</property>
		<property name="username" value="James"></property>
		<property name="password" value="jamesoracle"></property>
	</bean>
	 -->
	 
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/demo1">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="root"></property>
	</bean>
	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/james/model/TbUser.hbm.xml</value>
			</list>
		</property>
	</bean>
</beans>

6.web.xml配置檔案
<pre class="html" name="code"><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	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">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<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>*.action</url-pattern>
	</filter-mapping>
</web-app>
7.LoginDao介面和LoginDaoImpl寫法
//LoginDao
<pre class="html" name="code">package com.james.dao;

public interface LoginDao {
	public String Login(String userName, String passWord);
}

//LoginDaoImpl
package com.james.dao.impl;

import java.util.List;

import org.hibernate.SessionFactory;

import com.james.dao.LoginDao;
import com.james.model.TbUser;

public class LoginDaoImpl implements LoginDao {

	private SessionFactory sessionFactory;

	@SuppressWarnings("unchecked")
	public String Login(String userName, String passWord) {
		String hql = "from TbUser where username = ? and userpass = ?";
		List<TbUser> list = this.getSessionFactory().openSession().createQuery(
				hql).setString(0,userName).setString(1,passWord).list();
		System.out.print(list.size());
		for (TbUser uf : list) {
			return "success";
		}
		System.out.println("333");
		return "error";
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

}
8.model類Tbuser.java和TbUser.hbm.xml//TbUser.java
package com.james.model;

/**
 * TbUser entity. @author MyEclipse Persistence Tools
 */

public class TbUser implements java.io.Serializable {

	// Fields

	private Short userid;
	private String username;
	private String userpass;

	// Constructors

	/** default constructor */
	public TbUser() {
	}

	/** minimal constructor */
	public TbUser(Short userid) {
		this.userid = userid;
	}

	/** full constructor */
	public TbUser(Short userid, String username, String userpass) {
		this.userid = userid;
		this.username = username;
		this.userpass = userpass;
	}

	// Property accessors

	public Short getUserid() {
		return this.userid;
	}

	public void setUserid(Short userid) {
		this.userid = userid;
	}

	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getUserpass() {
		return this.userpass;
	}

	public void setUserpass(String userpass) {
		this.userpass = userpass;
	}

}

//TbUser.hbm.xml
<pre class="html" name="code"><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.james.model.TbUser" table="TB_USER" schema="demo1">
        <id name="userid" type="java.lang.Short">
            <column name="USERID" precision="4" scale="0" />
            <generator class="assigned" />
        </id>
        <property name="username" type="java.lang.String">
            <column name="USERNAME" length="32" />
        </property>
        <property name="userpass" type="java.lang.String">
            <column name="USERPASS" length="32" />
        </property>
    </class>
</hibernate-mapping>

9.WEB-INF下建立LoginSuccess.jsp檔案,若登陸成功則跳轉至LoginSuccess,失敗則跳轉回index.jsp
10.檔案放置位置如圖所示 
<img src="https://img-blog.csdn.net/20151019101018931?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
至此 SSH整合和簡單登陸功能就實現了。
三.常見的幾個問題需要注意 以及一些問題的解決辦法!
1.appliacationContext.xml檔案中 有沒有寫注入ACTION和SERVICE和DAO
2.有沒有在web.xml寫監聽 <listener>
3.MYECLIPSE8.5自帶的STRUTS2-SPRING 庫衝突 刪掉其他的只留struts2-spring包 myeclipse-->Preferences-->MyEclipse-->Project Capabilities-->Struts 2-->Struts 2 Spring Libraries-->,只留下struts-Spring-plugin-2.1.8.1.jar,其餘的都remove,搞定。