• struts 简单配置运用做一个简单的注册


    一:配置好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>

    结果和之前的方法是一样的 这里就不再展示了。

  • 相关阅读:
    2018 ICPC 徐州网络赛
    2018 CCPC网络赛
    2013 NEERC
    2015 Dhaka
    2018ICPC南京网络赛
    Codeforces Round #505
    Codeforces Round #504 E. Down or Right
    Codeforces Round #504 D. Array Restoration
    2018 Multi-University Training Contest 3
    2018 Multi-University Training Contest 2
  • 原文地址:https://www.cnblogs.com/dnf1612/p/6542504.html
Copyright © 2020-2023  润新知