配置SSH框架
来源:互联网 发布:全轮转可变数据印刷机 编辑:程序博客网 时间:2024/05/16 12:41
一、配置Struts
首先在web.xml中配置Struts核心过滤器和过滤器映射
web.xml代码如下:
<!-- 定义Struts 2 的核心控制器 --> <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> <listener> <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list>
新建包com.ssh.action,建立BaseAction,继承ActionSupport,实现接口ServletRequestAware,ServletResponseAware,ServletContextAware,SessionAware
package com.ssh.action;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.interceptor.SessionAware;import org.apache.struts2.util.ServletContextAware;import com.opensymphony.xwork2.ActionSupport;public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware,SessionAware{ private static final long serialVersionUID = 4565394360208096613L; protected HttpServletRequest request; protected HttpServletResponse response; protected ServletContext context; protected Map<String,Object>session; @Override public void setSession(Map<String, Object> session) { this.session = session; } @Override public void setServletContext(ServletContext context) { this.context = context; } @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; }}
编写测试Struts的Action,在com.ssh.action包内建立LoginAction类,继承BaseAction类,作为Struts的测试
LoginAction类的代码如下:
package com.ssh.action;public class LoginAction extends BaseAction{ private static final long serialVersionUID = -6144396976094110475L; public String execute() throws Exception{ return "success"; }}
在struts.xml文件中添加对LoginAction的配置
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> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.i18n.reload" value="false" /> <constant name="struts.configuration.xml.reload" value="false" /> <constant name="struts.custom.i18n.resources" value="globalMessages" /> <constant name="struts.action.extension" value="action,," /> <constant name="struts.convention.package.locators.basePackage" value="com.ssh.action" /> <constant name="struts.convention.result.path" value="/" /> <constant name="struts.serve.static" value="true" /> <constant name="struts.serve.static.browserCache" value="false" /> <package name="login" extends="struts-default"> <action name="login" class="com.ssh.action.LoginAction"> <result name="success">/WEB-INF/jsp/welcome.jsp</result> </action> </package> </struts>
二、配置spring
在applicationContext.xml文件中配置spring,添加ActionBean的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd "> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> </bean></beans>
打开web.xml文件,在web.xml文件中配置spring监听器
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value></context-param> <!-- ssh 中文过滤 --> <filter> <filter-name>characterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<!-- 对Spring 容器进行实例化 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list>
三、配置hibernate
在src文件下建立hibernate.cfg.xml文件
hibernate.cfg.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306;databaseName=test</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <mapping class="com.config.*"/> </session-factory></hibernate-configuration>
四、建立数据库和数据表
此处采用MySQL,不同的数据库连接驱动和URL不同,jar也不同。在MySQL中建立test数据库,创建user表,包括id,username,password等属性,插入一条数据。
五、创建实体类
创建包com.ssh.model,创建User类,实现接口Serializable
package com.ssh.model;import java.io.Serializable;public class User implements Serializable{ private static final long serialVersionUID = 6120793500259112385L; private Integer id; private String username; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public static long getSerialversionuid() { return serialVersionUID; }}
添加映射文件,创建包com.ssh.config,创建User.hbm.xml文件,作为User 与数据表之间的映射文件
<?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"><hibernate-mapping package="com.ssh.model"> <class name="User" table="user"> <id name="id" type="integer"> <column name="id"></column> <generator class="native"></generator> </id> <property name="username" type="string"> <column name="username"></column> </property> <property name="password" type="string"> <column name="password"></column> </property> </class></hibernate-mapping>
添加包名是为了下面class的name属性可以直接使用类名,不用带着包名。generator属性为主键生成机制,常用的有3种(native,identity和sequence),mysql使用identity,也可以直接使用native(根据数据库的默认设定而定)。
重新写LoginAction类,加入数据库信息验证,采用分层结构,model持久层,dao模型层,service业务控制层。从action开始写,需要什么业务就定义出来,生成service 接口,然后实现接口,同样用相同的方法定义dao 层。
LoginAction:
package com.ssh.action;import com.ssh.service.UserService;public class LoginAction extends BaseAction{ private static final long serialVersionUID = -6144396976094110475L; private UserService userService; private String username; private String password; public String execute() throws Exception{ try{ if(userService.login(username, password)) return "success"; else return "error"; }catch(Exception e){ e.printStackTrace(); } return "error"; } public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public static long getSerialversionuid() { return serialVersionUID; }}
生成service接口
UserService:
package com.ssh.service;public interface UserService { public boolean login(String username,String password);}
实现service接口
UserServiceImpl:
package com.ssh.service.impl;import com.ssh.dao.UserDao;import com.ssh.model.User;import com.ssh.service.UserService;public class UserServiceImpl implements UserService{ private UserDao userDao; @Override public boolean login(String username, String password) { // TODO Auto-generated method stub User user = userDao.findUserByName(username); if(user != null){ if(password != null){ if(password.equals(user.getPassword())) return true; } } return false; } public void setUserDao(UserDao userDao){ this.userDao = userDao; }}
同样,生成dao 接口
UserDao:
package com.ssh.dao;import com.ssh.model.User;public interface UserDao { public User findUserByName(String username);}
实现dao接口,继承HibernateDaoSupport
UserDaoImpl:
package com.ssh.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.ssh.dao.UserDao;import com.ssh.model.User;public class UserDaoImpl extends HibernateDaoSupport implements UserDao{ @SuppressWarnings("unchecked") @Override public User findUserByName(String username) { // TODO Auto-generated method stub List<User> list; String hql = "from User u where u.username=?"; list = this.getHibernateTemplate().find(hql,username); if(list != null){ return list.get(0); } return null; }}
六、建立JSP测试页面,在/WEB-INF下建立jsp文件夹,在其中建立login.jsp、welcome.jsp
login.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 'login.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" method="post"> Username:<input type="text" name="username"/><br/> Password:<input type="password" name="password"/><br/> <input type="submit" value="Submit"/> </form> </body></html>
登录成功跳转
welcom.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>welcome</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> welcome!<s:property value="username"/> </body></html>
重新写Struts配置文件
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> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.i18n.reload" value="false" /> <constant name="struts.configuration.xml.reload" value="false" /> <constant name="struts.custom.i18n.resources" value="globalMessages" /> <constant name="struts.action.extension" value="action,," /> <constant name="struts.convention.package.locators.basePackage" value="com.ssh.action" /> <constant name="struts.convention.result.path" value="/" /> <constant name="struts.serve.static" value="true" /> <constant name="struts.serve.static.browserCache" value="false" /> <package name="login" extends="struts-default"> <action name="loginform"> <result name="success">/WEB-INF/jsp/login.jsp</result> </action> <action name="login" class="LoginAction"> <result name="success">/WEB-INF/jsp/welcome.jsp</result> </action> </package> </struts>
基本的ssh框架配置就完成了。
ssh框架的构建配置比较麻烦,需要细心和耐心,一旦有一个地方配置出错,就会运行不起来。
- ssh框架配置
- SSH框架--struts配置
- SSH框架配置log4j
- 手动配置SSH框架
- SSH框架配置log4j
- SSH框架配置详解
- 手动配置SSH框架
- ssh框架配置+开发
- SSH 框架整合配置
- MyEclipse 配置SSH框架
- 手动配置SSH框架
- ssh框架整合配置
- SSH框架环境配置
- ssh框架配置
- ssh框架配置
- 配置SSH框架
- SSH框架搭建配置
- 基本ssh框架配置
- SSM项目导出Excel操作
- Eclipse配置C/C++环境教程
- Eclipse代码逆向生成UML插件ObjectAid
- spring boot入门
- 遍历Map的四种方法
- 配置SSH框架
- 易语言正则批量匹配
- 压缩列表(ziplist)
- Android 关于观察者模式使用代码总结
- 未声明的标识符错误
- 中文分词Rwordseg
- 基于Redis实现分布式锁(下)
- Codeforces
- Xcode后台打印出现:[Client] Geocode error: Error Domain=GEOErrorDomain Code=-8 "(null)”