一:配置好hibernate
1.导包 hibernate包和jdbc连接mysql数据库的包
2.实用工具生成hibernate配置文件和映射文件
3.做好hibernateUtil生成session的静态单例配置文件
二:编写数据访问
DAO添加、查询
package com.itnba.maya.model; import java.math.BigDecimal; import org.hibernate.Session; public class LoginDao { public Login select(String username){ Session session = null; Login data = null; try{ session = HibernateUtil.getSession(); data = session.get(Login.class, username); } catch(Exception e){ e.printStackTrace(); } finally { HibernateUtil.closeSession(); } return data; } public void insert(String username, String name ,String password,BigDecimal account){ Session session = null; try{ session = HibernateUtil.getSession(); Login data = new Login(); data.setUserName(username); data.setName(name); data.setPassword(password); data.setAccount(account); session.beginTransaction(); session.save(data); session.getTransaction().commit(); } catch(Exception e){ e.printStackTrace(); session.getTransaction().rollback(); } finally { HibernateUtil.closeSession(); } } }
三:配置struts
1.导包 空白包、jstl包
在apps文件夹下将struts-blank.war复制粘贴将后缀改为rar格式,解压到这个目录下,这样就生成了一个空白的项目,这里边的WEB-INF文件下lib里边的jar包就是我们struts所需要必须的jar包,另外如果需要用jstl标签,就把jstl的jar包也导入我们项目的WEB-INF文件下的lib中
2.配置web.xml()
这里的web.xml一样是刚刚生成的空白项目中的WEB-INF文件下的空白web.xml文件,复制粘贴到项目中,将我们不需要用的删除即可,只留下我们需要的内容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name> <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> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
四:界面和控制器
(一)做视图
做三个界面 reg.jsp(注册界面) reg_ok.jsp(成功界面) reg_error.jsp(失败界面)
(二)两个类
一个只是为了跳转注册页面
代码如下:
package com.itnba.maya.controller; import com.opensymphony.xwork2.ActionSupport; public class IndexAction extends ActionSupport { @Override public String execute() throws Exception { return SUCCESS; } }
另一个是做个RegAction的类 四个成员变量(获取form表单数据)
代码如下:
package com.itnba.maya.controller; import java.math.BigDecimal; import com.itnba.maya.model.Login; import com.itnba.maya.model.LoginDao; import com.opensymphony.xwork2.ActionSupport; public class RegAction extends ActionSupport { private String username; private String name; private String password; private BigDecimal account; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public BigDecimal getAccount() { return account; } public void setAccount(BigDecimal account) { this.account = account; } @Override public String execute() throws Exception { Login data = new LoginDao().select(username); if(data==null){ new LoginDao().insert(username, name, password, account); return SUCCESS; } else{ return ERROR; } } }
重写execute方法,调用数据访问查询看下是否存在 存在return error 不存在return success
(三)配置struts.xml
action 1 跳转注册页面
action 2 name="reg" 和类名、页面名对应起来 指向RegAction.class 两个result 一个成功一个失败
代码如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="index" class="com.itnba.maya.controller.IndexAction"> <result> reg.jsp </result> </action> <action name="reg" class="com.itnba.maya.controller.RegAction"> <result> reg_ok.jsp </result> <result name="error"> reg_error.jsp </result> </action> </package> </struts>
运行struts.xml,将地址改为index即可显示注册页面
输入已有的账号显示如下:
输入没有注册过的账号显示如下:
这样一个简单的注册就做完了。
简单方法:
在struts.xml中配置:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="*_*" class="com.itnba.maya.controller.{1}Action" method="{2}"> //*_*这是通配符,如果用这种方法就需要命名规范,不能随便命名 <result name="success"> //{1}、{2}对应之前的*,{1}是指Action的前缀名,{2}是指Action中的方法名 {1}_{2}.jsp </result> <result name="error"> {1}_{2}_error.jsp </result> </action> </package> </struts>
Action中的代码如下:
package com.itnba.maya.controller; import java.math.BigDecimal; import com.itnba.maya.model.Login; import com.itnba.maya.model.LoginDao; import com.opensymphony.xwork2.ActionSupport; public class RegAction extends ActionSupport { private String username; private String name; private String password; private BigDecimal account; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public BigDecimal getAccount() { return account; } public void setAccount(BigDecimal account) { this.account = account; } public String add(){ //这个方法是跳转页面 return SUCCESS; } public String insert(){ Login data = new LoginDao().select(username); //这个方法是接收数据,处理数据,并根据判断跳转其他页面 if(data==null){ new LoginDao().insert(username, name, password, account); return SUCCESS; } else{ return ERROR; } } }
相应的jsp的命名一定要规范:
在第一次跳转页面时form表单跳转的地址也随之改变:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="Reg_insert"> 注册账号:<input type="text" name="username"> 真实姓名:<input type="text" name="name"> 登录密码:<input type="text" name="password"> 账户余额:<input type="text" name="account"> <input type="submit" value="go"> </form> </body> </html>
结果和之前的方法是一样的 这里就不再展示了。