zoukankan      html  css  js  c++  java
  • Myeclipse下配置struts2和hibernate

    最近维护一个项目,是用struts2做的,所以特意学了下struts的入门,否则代码都看不懂啊。下面记录下过程。Myeclipse 版本为2014.struts2,hibernate为4.1。

    1、既然要用到hibernate,自然要有个数据库了,我在localhost的数据库test里建了个表t_user;

    CREATE TABLE `t_user` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(45) NOT NULL,
      `sex` varchar(45) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    2、打开myeclipse,然后创建一个web项目。

    3、创建一个数据库连接

    然后右击选new,新建一个连接。

    选择mysq填入相应的信息,点保存密码,可以测试下,正确的话会给出下面的提示

    如果出现乱码的情况,先要保证项目和数据库的编码一致,我这里用的都是utf-8。在数据源那儿这样写 
    jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8 
    但是如果你页面编码都统一配置了UTF-8,应该都不会乱的。还有你的数据库编码也要一致。

    4、添加hibernate

    双击myconnect打开链接,展开数据库,找到表t_user,右击并选择“Hibernate Reverse Engineering……”,

    然后填写dao类所在的包,例如:com.myeclipse.hibernate

    完成之后回到项目列表里,右击项目名称添加Hibernate

    此处没有了,因为已经添加过了。

    5、添加struts2

    同上图操作,添加struts2,可以看到只剩下struts1了,因为struts2已经添加过了,之后项目src下就可以看到hibernate和struts的配置文件了,

    6、配置实用struts2,这里先要配置web.xml

    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    这里是个最简单的配置,可以根据需要增加内容。我看默认里 <url-pattern>*.action</url-pattern>这里是不对的。具体还待学习,这样的后果是报错,我这样部署到tomcat下的时候,这个应用是个false。Tomcat的webapp目录下的各个应用是会有的状态为true,有的为false的。这个可以通过tomcat的manage查看。

    然后就要配置struts.xml了,这里说明了访问的url如何对应到class里,调用什么方法,并且根据结果执行后续的操作,比如执行某个jsp文件。

    <struts>
    <package name="com.example.strus2" extends="struts-default" namespace="/">
    <global-results>
    <result name="input">/error.jsp</result>
    </global-results>

    <action name="addUser" class="com.example.struts.action.LoginAction">
    <result name="success">/success.jsp</result>
    </action>

    <action name="info" class="com.example.struts.action.LoginAction" method="addUser">
    <result name="success">/error.jsp</result>
    </action>
    </package>
    </struts>

    可以参考这篇文章。http://www.cnblogs.com/kay/archive/2007/11/28/976120.html,method如果省去,就会总是返回success,但没有执行任何方法,开始还以为可以省去呢。

    之后就要写class了,先创建com.example.struts.action包,在这个包下创建LoginAction类,这个和上面的class对应。

    package com.example.struts.action;

    import com.opensymphony.xwork2.ActionSupport;
    import com.myeclipse.hibernate.TUser;
    import com.myeclipse.hibernate.TUserDAOFactory;

    public class LoginAction extends ActionSupport {

    /**
    *
    */
    private static final long serialVersionUID = 1L;
    private String name;
    private String sex;

    public String addUser() {
    System.out.println("name is: " + name + ", and sex is: " + sex);
    TUserDAOFactory daof = new TUserDAOFactory();
    TUser tuser = new TUser(this.name, this.sex);
    daof.addUser(tuser);
    return "success";
    }

    public String info() {
    System.out.println("name is:" + name);
    return "success";
    }

    public String getName() {
    return this.name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getSex() {
    return this.sex;
    }

    public void setSex(String sex) {
    this.sex = sex;
    }

    }

    然后添加error.jsp success.jsp login.jsp文件。

    error.jsp 用最简单的html文件就行。

    success.jsp 参考代码如下。

    <%@ page language="java" 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">
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>My JSP 'MyJsp.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>
    登录页面<br>
    <s:form action="addUser.action">
    <s:textfield name="name" label="姓名" />
    <s:textfield name="sex" label="性别" />
    <s:submit value="添加" />
    </s:form>
    </body>
    </html>

    这里的form采用了struts2标签。 注意要有红色字的那行代码才支持struts。

    success.jsp 的参考代码如下,这里用到了<s:property value="name" />,这里的name对应对象里的this.name,他会自动通过getName来获取。

    <%@ page language="java" import="java.util.*" 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">
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>My JSP 'MyJsp.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>
    登录页面<br>
    姓名:<s:property value="name" /><br />
    性别:<s:property value="sex" />
    </body>
    </html>

    实际操作下,然后看看数据库的变化。

    遇到的问题,一个警告

    No configuration found for the specified action: 'addUser' in namespace: ''. Form action defaulting to 'action' attribute's literal value.

    解决方法是:<s:form action="addUser" method="post" namespace="/"> 添加namespace=“/”,然后就没有这个提示了。

  • 相关阅读:
    [引]Windows窗体编程基础学习: 对话框组件
    UML学习四:UML在微软的VS与Visio间的应用 VEA(Visio for Enterprise Architects)
    SQL查询 FOR XML [RAW|AUTO|EXPLICIT]
    微软企业类库:Enterprise Library for .NET Framework 2.0 January 2006
    自定义制作 自动定时更换图片的桌面背景 html页面
    [引]Windows Server 2003 : Windows 群集
    LOVE
    SQL Server Mobile 学习(三):SQL Server Mobile 远程数据访问(RDA)
    游戏分类
    [摘]UML学习二:标准建模语言UML的静态建模机制
  • 原文地址:https://www.cnblogs.com/wayne173/p/3844783.html
Copyright © 2011-2022 走看看