struts2初印象
第一次写这么正式的文章,如果写的不好的地方,请指出。
今天玩了一下struts2,不过貌似是我被他玩了。简要笔记如下:
一、配置struts2(在eclipse Helios版本下)
(1)先创建一个Dynamic Web Project,具体方法如下,File->New->Other->Web->Dynamic Web Project
(2)填好好相关,比如Project name为struts2login,然后不要急着按Finish键,因为新版本的的eclipse是不会自动生成web.xml文件的,所以要乖乖按Next键,接着就会看到一个“Generate web.xml deployment descriptor”,勾上,这样就会在WEB-INF目录下生成web.xml
(3)登录http://struts.apache.org/download.cgi 下载struts2Full Distribution版本。然后解压,将lib目录下的commons-fileupload、common-io、freemarker、
javassist、ognl、struts2-core、xwork-core的jar包复制到刚刚那个Dynamic Web Project 的WebContent/WEB-INF/lib目录下
(4)修改web.xml文件
增加字体比较大的一部分。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>struts2test</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> 13 <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>
</web-app>
(5)在src目录下编写struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<!-- 指定Struts 2配置文件的根元素 -->
<struts>
<!-- 指定全局国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="mess"/>
<!-- 指定国际化编码所使用的字符集 -->
<constant name="struts.i18n.encoding" value="utf-8"/>
<!-- 所有的Action定义都应该放在package下 -->
<package name="fong" extends="struts-default">
<action name="login" class="LoginAction">
<!-- 定义三个逻辑视图和物理资源之间的映射 -->
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
(6)编写login.jsp在WebContent目录下,记住不要放到WEB-INF目录下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!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><s:text name="loginPage"/></title>
</head>
<body>
<s:form action="login">
<s:textfield name="username" key="use"/>
<s:textfield name="password" key="pas"/>
<s:submit key="login"/>
</s:form>
</body>
</html>
(7)照6,写error.jsp和welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!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><s:text name="errorPage"/></title>
</head>
<body>
<s:text name="errorInfo"/>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!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><s:text name="welcomePage"/></title>
</head>
<body>
<s:text name="welcomeInfo">
<s:param>${sessionScope.user}</s:param>
</s:text>
</body>
</html>
(8)在src目录下配置mess.properties文件如下
loginPage=登录页面
errorpage=错误页面
welcomePage=欢迎页面
errorInfo=登录输入错误
welcomeInfo=欢迎,{0},登陆成功
use=用户名
pas=密 码
login=提交
(9)使用native2ascii(JDK下的一个工具)生成unicode编码的mess.properties文件,生成文件的名字为mess_zh_CN.properties
loginPage=\u767b\u5f55\u9875\u9762
errorpage=\u9519\u8bef\u9875\u9762
welcomePage=\u6b22\u8fce\u9875\u9762
errorInfo=\u767b\u5f55\u8f93\u5165\u9519\u8bef
welcomeInfo=\u6b22\u8fce\uff0c{0}\uff0c\u767b\u9646\u6210\u529f
use=\u7528\u6237\u540d
pas=\u5bc6 \u7801
login=\u63d0\u4ea4
(10)编写LoginAction.java文件,在src目录下
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport
{
/**
*
*/
private static final long serialVersionUID = 1L;
private String username;
private String password; public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
} public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
//定义处理用户请求的execute方法
public String execute() throws Exception
{
//当username为crazyit.org,password为leegang时即登录成功
if (getUsername().equals("Fong")
&& getPassword().equals("haha") )
{
ActionContext.getContext().getSession()
.put("user" , getUsername());
return SUCCESS;
}
else
{
return ERROR;
}
}
}
然后就已经搞定完一个struts2的应用。
被坑的有几处。
(1)UTF-8中文乱码,其实只要在struts.xml中
<constant name="struts.custom.i18n.resources" value="mess"/>
然后就要在src目录下创建mess.properties的文件,然后用native2ascii生成mess_zh_CN.properties
在jsp页面中引用mess.properties中的常量,比如:<s:text name="loginPage"/>,如果有修改mess.properties文件,记得要重新用native2ascii重新生成unicode编码的文件。
(2)如果运行之后出现“
LoginAction.execute(LoginAction.java:36)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
”
的错误,可能的一个原因如下,在表单提交的JSP页面中
<s:form action="login">
<s:textfield name="username" key="use"/>
<s:textfield name="password" key="pas"/>
<s:submit key="login"/>
</s:form>
name值是为了给java文件中的Action类传参用的,所以名字必须与java文件中的Action类的函数名字一样,比如
LoginAction中的getUsername()函数和setUsername()函数,如果写成getUserName()和setUserName(),那么这两个函数struts将调用不到。
(U必须为大写,N必须为小写,因为 name="username"中的N为小写,但是U处在两个单词的分隔处)。
struts2初印象的更多相关文章
- Vue.js之初印象
一.背景 MVVM模式,很多人在说在用,好吧,我落后了,我目前的项目木有用到MVVM模式的框架,vuejs,reactjs,angularjs,nonono,自己去捣鼓过ng,项目木有用到.实在不敢称 ...
- Django初印象之视图(view)
一.view的初印象 一个视图函数(类),简称视图.我们发起web请求时,返回的web响应.[大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中.] ...
- 初印象至Vue路由
初印象系列为快速了解一门技术的内容,后续会推出本人应用这门技术时发现的一些认识. Vue路由和传统路由的区别: Vue路由主要是用来实现单页面应用内各个组件之间的切换,同样支持传递参数等功能.而传统路 ...
- OpenCL学习笔记(一):摩尔定律,异构计算与OpenCL初印象
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 关于摩尔定律: 摩尔定律19 ...
- [强化学习]Part1:强化学习初印象
引入 智能 人工智能 强化学习初印象 强化学习的相关资料 经典书籍推荐:<Reinforcement Learning:An Introduction(强化学习导论)>(强化学习教父Ric ...
- Three 之 Animation 初印象
Animation 初印象 动画效果 播放动画需要基本元素 AnimationMixer 一个对象所有动作的管理者 用于场景中特定对象的动画的播放器.一个对象可能有多个动作,Mixer 是用来管理所有 ...
- struts2初体验
一:什么是struts2? Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点 Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开 ...
- Struts2初学习记录
以下笔记内容来自尚硅谷_Struts2_佟刚老师的视频教程+自己一点点整理 来源免责声明 一. 1. VS 自实现: 1). 搭建 Struts2 的开发环境 2). 不需要显式的定义 Filter, ...
- Struts2 初体验
Sturts是一款优雅的,可扩展性很强的框架.它是由Struts开发团队和WebWord团队合作,共同开发的一个新的产品.新版本的Struts2 更加容易使用,更加接近Struts所追求的理念.从开发 ...
随机推荐
- HW4.3
public class Solution { public static void main(String[] args) { final double POUND_PER_KILOGRAM = 2 ...
- STM32F103 与 STM32F407引脚兼容问题
===========突袭网收集的解决方案如下=========== 解决方案1: STM32F103有的功能407都有,并且这些功能的引脚完全兼容,只是程序不同而已...而STM32F407有的功能 ...
- sp_send_dbmail权限问题
这段时间处理SSIS服务器迁移的事情,在处理一个发送邮件的任务的时候,突然出现如下错误, 拒绝了对对象 'sp_send_dbmail' (数据库 'msdb',架构 'dbo')的 EXECUTE ...
- Jquery常用方法篇(一)
1.add方法:将匹配的元素添加到当前的jquery对象集合中. 语法 add(expr,[context]) 参数1表示 用于匹配元素选择器(待添加的对象),或者用于动态生成的HTML代码(字符串) ...
- 收集内存信息(总量、可用、已用、百分比)导出到csv
#############################脚本功能及说明##################################################该脚本用来在各台ERP服务器 ...
- 二叉树可视化--Graphviz
大家平时写C程序有没有种把内存里的数据结构全给画出来的冲动呢?数据量小的话,画起来还蛮简单,用viso,我前面的文章都用viso画的.之前写红黑树代码的时候,用的是命令行把整个树打印出来,不过只是一些 ...
- Tsar 服务器系统和应用信息的采集报告工具
Tsar介绍 Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据(nginx.swift等),收集到的数据存储在服务器磁盘上,可以 ...
- TCPDUMP Command Examples
tcpdump command is also called as packet analyzer. tcpdump command will work on most flavors of unix ...
- CentOS6.3挂载读写NTFS分区
CentOS不像Fedora,默认是没有自动挂载NTFS的,而它可以利用NTFS-3G来实现挂载及读写. NTFS-3G 是一个开源的软件,可以实现 Linux.Free BSD.Mac OSX.Ne ...
- hihocoder 第一周 最长回文字串
题目1 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程 ...