码迷,mamicode.com
首页 > 系统相关 > 详细

Myeclipse下配置struts2和hibernate

时间:2014-07-16 19:11:55      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   java   color   

最近维护一个项目,是用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、创建一个数据库连接

bubuko.com,布布扣

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

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

bubuko.com,布布扣

4、添加hibernate

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

5、添加struts2

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

bubuko.com,布布扣

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=“/”,然后就没有这个提示了。

 

Myeclipse下配置struts2和hibernate,布布扣,bubuko.com

Myeclipse下配置struts2和hibernate

标签:des   style   blog   http   java   color   

原文地址:http://www.cnblogs.com/wayne173/p/3844783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!