创建项目
第一步:创建项目
第二步:设置项目名称和项目路径
如果有网会自动下载加包,可以点击“Cancel”取消,因为我们前面选择了等项目创建成功后再导入加包。
如果没有网,点击“Cancel”取消。
第三步:配置tomcat
第四步:导入加包
在WEB-INF下创建一个lib文件夹
并将SSH项目所需要的各种jar包复制到lib文件夹下。
SSH项目需要的jar包如下:
然后将lib下的包作为第三方加包引入项目
再处理一个问题,
打开项目结构
有一个报错:
然后Problems选项卡就没有任何报错了,一个项目创建成功
创建测试
按照下图创建文件夹及文件:
各文件内容如下:
UserAction.java
package action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import model.User;
import service.UserService;
import java.util.Map;
public class UserAction extends ActionSupport {
User user;
UserService userService;
public String login() {
String name = user.getUserName();
String pswd = user.getPassword();
User u = userService.findByNameAndPswd(name, pswd);
if (u == null) {
addFieldError("errMsg", "用户名或密码不正确!");
return "input";
} else {
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("user", u);
return "success";
}
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
UserAction-login-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
<!--验证用户名-->
<field name="user.userName">
<field-validator type="requiredstring">
<message>用户名是必需的!</message>
</field-validator>
</field>
<!--验证密码-->
<field name="user.password">
<field-validator type="requiredstring">
<message>密码是必需的!</message>
</field-validator>
</field>
</validators>
UserDaoImpl.java
package dao.impl;
import dao.UserDao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.util.List;
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
@Override
public List query(String name, String pswd) {
String queryString = "FROM User u WHERE userName=? AND password=? ";
return getHibernateTemplate().find(queryString, name, pswd);
}
}
UserDao.java
package dao;
import java.util.List;
public interface UserDao {
/**
* 使用用户名和密码查询用户
*
* @param name 用户名
* @param pswd 密码
* @return 返回查询结果集
*/
List query(String name, String pswd);
}
User.java
package model;
public class User {
private int id;
private String userName;
private String trueName;
private String password;
private String role;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getTrueName() {
return trueName;
}
public void setTrueName(String trueName) {
this.trueName = trueName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", trueName='" + trueName + '\'' +
", password='" + password + '\'' +
", role='" + role + '\'' +
'}';
}
}
User.hbm.xml
<?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>
<class name="model.User" table="userTable" catalog="db_homework_demo">
<id name="id" type="java.lang.Integer">
<column name="id" not-null="false"/>
<generator class="native"/>
</id>
<property name="userName" type="java.lang.String">
<column name="userName" length="20" not-null="false"/>
</property>
<property name="trueName" type="java.lang.String">
<column name="trueName" length="20" not-null="false"/>
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" not-null="false"/>
</property>
<property name="role" type="java.lang.String">
<column name="role" length="20" not-null="false"/>
</property>
</class>
</hibernate-mapping>
UserServiceImpl.java
package service.impl;
import dao.UserDao;
import model.User;
import service.UserService;
import java.util.List;
public class UserServiceImpl implements UserService {
UserDao userDao;
@Override
public User findByNameAndPswd(String name, String pswd) {
List list = (List) userDao.query(name, pswd);
if (list.size() > 0) {
return (User) list.get(0);
} else {
return null;
}
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
UserService.java
package service;
import model.User;
import java.util.List;
public interface UserService {
User findByNameAndPswd(String name, String pswd);
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_homework_demo"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<!-- show sql -->
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>model/User.hbm.xml</value>
</list>
</property>
</bean>
<!--用户Dao-->
<bean id="userDao" class="dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--用户Service-->
<bean id="userService" class="service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
</beans>
struts.properties
struts.objectFactory=spring
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<!-- 用户管理 -->
<package name="userManage" extends="struts-default">
<!-- 登录 -->
<action name="login" class="action.UserAction" method="login">
<result name="input">/login.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name></display-name>
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
<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>/*</url-pattern>
</filter-mapping>
<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>
</web-app>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<h1>这是首页!</h1>
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%= basePath %>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
</head>
<body>
<div class="wrapper">
<s:form action="login" method="post" theme="simple">
<div class="login">
<div class="login_title">
用户登录
</div>
<fieldset>
<legend>账户信息</legend>
<p>
请输入用户账户信息进行登录,若没有账户,请先<a href="#">注册</a>
</p>
<table>
<tr>
<td>用户名</td>
<td>
<s:textfield name="user.userName"></s:textfield><s:fielderror fieldName="user.userName"/>
</td>
</tr>
<tr>
<td>密码</td>
<td>
<s:password name="user.password"></s:password><s:fielderror fieldName="user.password"/>
</td>
</tr>
</table>
</fieldset>
<s:submit value="提 交" cssClass="login_submit"></s:submit>
<s:reset value="重置" cssClass="login_submit"></s:reset>
</div>
</s:form>
</div>
</body>
</html>
success.jsp
<%@ page import="model.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>成功</title>
</head>
<body>
<h1>恭喜您<%=((User)session.getAttribute("user")).getTrueName()%>,登录成功!</h1>
</body>
</html>
数据库SQL如下:
/*
Navicat MySQL Data Transfer
Source Server : MySQL
Source Server Version : 50515
Source Host : 127.0.0.1:3306
Source Database : db_homework_demo
Target Server Type : MYSQL
Target Server Version : 50515
File Encoding : 65001
Date: 2020-01-05 17:44:51
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for usertable
-- ----------------------------
DROP TABLE IF EXISTS `usertable`;
CREATE TABLE `usertable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(20) NOT NULL,
`trueName` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
`role` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of usertable
-- ----------------------------
INSERT INTO `usertable` VALUES ('1', 'admin', 'admin', 'admin', '管理员');
INSERT INTO `usertable` VALUES ('2', '剑谪仙', '剑谪仙', 'admin', '学生');
INSERT INTO `usertable` VALUES ('3', '王五', '王五', 'admin', '学生');
INSERT INTO `usertable` VALUES ('6', '秦假仙', '秦假仙', 'qjx', '教师');
INSERT INTO `usertable` VALUES ('7', '素还真', '素还真', 'shz', '教师');
INSERT INTO `usertable` VALUES ('8', '风月主人', '风月主人', 'admin', '学生');
配置applicationContext.xml
配置成功,这里有个标志
所有代码完成,现在运行程序
点击【提交】验证
输入可登录成功用户admin,密码admin。
登录成功