MyEclipse8.5配置整合SSH框架 簡單登入驗證功能
阿新 • • 發佈:2019-02-12
>部落格已統一遷移到點選開啟<
學習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
2.LoginAction寫法 【我這裡直接在struts.xml指定了方法名 不需要使用execute()】<%@ 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>
<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.javapackage 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,搞定。