-JAX-WS Web Services
-Deployment Descriptor
-Java Resorces
-src/main/java
<span style="white-space:pre"> </span> -com.lwp.myblog
<span style="white-space:pre"> </span>-action
<span style="white-space:pre"> </span> -BlogEditAction.java
<span style="white-space:pre"> </span> -UserAction.java
<span style="white-space:pre"> </span>-dao
<span style="white-space:pre"> </span> -BlogMapper.java
<span style="white-space:pre"> </span> -UserMapper.java
<span style="white-space:pre"> </span>-mapper
<span style="white-space:pre"> </span> -BlogMapper.xml
<span style="white-space:pre"> </span> -UserMapper.xml
<span style="white-space:pre"> </span>-model
<span style="white-space:pre"> </span> -Blog.java
<span style="white-space:pre"> </span> -User.java
<span style="white-space:pre"> </span>-service
<span style="white-space:pre"> </span> -BlogServiceI.java
<span style="white-space:pre"> </span> -UserServiceI.java
<span style="white-space:pre"> </span>-serviceImpl
<span style="white-space:pre"> </span> -BlogServiceImpl.java
<span style="white-space:pre"> </span> -UserServiceImpl.java<span style="white-space:pre"> </span>
-src/main/resources
<span style="white-space:pre"> </span> -struts
<span style="white-space:pre"> </span> -struts-blog.xml
<span style="white-space:pre"> </span> -struts-user.xml
<span style="white-space:pre"> </span> -applicationContext.xml
<span style="white-space:pre"> </span> -jdbc.properties
<span style="white-space:pre"> </span> -log4j.properties
<span style="white-space:pre"> </span> -mybatis_config.xml
<span style="white-space:pre"> </span> -spring.xml
<span style="white-space:pre"> </span> -struts.xml
-src/test/java
-src/test/resources
-JavaScrip Resources
-Deployed Resources
-src
-main
<span style="white-space:pre"> </span>-java
<span style="white-space:pre"> </span>-resources
<span style="white-space:pre"> </span> -struts
<span style="white-space:pre"> </span> -struts-blog.xml
<span style="white-space:pre"> </span> -struts-user.xml
<span style="white-space:pre"> </span> -applicationContext.xml
<span style="white-space:pre"> </span> -jdbc.properties
<span style="white-space:pre"> </span> -log4j.properties
<span style="white-space:pre"> </span> -mybatis_config.xml
<span style="white-space:pre"> </span> -spring.xml
<span style="white-space:pre"> </span> -struts.xml
<span style="white-space:pre"> </span> -webapp
<span style="white-space:pre"> </span> -blogEdit
<span style="white-space:pre"> </span>-ueditor(下载的文件夹)
<span style="white-space:pre"> </span>-blogEdit.css
<span style="white-space:pre"> </span>-blogEdit.jsp
<span style="white-space:pre"> </span> -common
<span style="white-space:pre"> </span>-error.jsp
<span style="white-space:pre"> </span> -main
<span style="white-space:pre"> </span>-main.css
<span style="white-space:pre"> </span>-main.jsp
<span style="white-space:pre"> </span> -META-INF
<span style="white-space:pre"> </span>-lib
<span style="white-space:pre"> </span>-web.xml
<span style="white-space:pre"> </span> login.jsp
-test
-target
-pom.xml
BlogEdit.java:
package com.lwp.myblog.action;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import com.lwp.myblog.model.Blog;
import com.lwp.myblog.service.BlogServiceI;
import com.opensymphony.xwork2.ActionSupport;
public class BlogEditAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = -5027954416667744991L;
@Autowired
private BlogServiceI blogServiceI;
private Blog blog;
public String execute() throws Exception
{
System.out.println("BlogEditAction in!!!");
if(blog!=null)
{
Date d = new Date();
String s=null;
DateFormat sdf3 = new SimpleDateFormat("yyyyMMddHHmmss");
s = sdf3.format(d);
blog.setBlogId(s.trim());
System.out.println("blog.getBlogId():"+blog.getBlogId());
System.out.println("blog.getTitle():"+blog.getTitle());
System.out.println("blog.getClassification():"+blog.getClassification());
System.out.println("blog.getContent():"+blog.getContent());
if(blogServiceI.addBlog(blog))
{
System.out.println("successhahahah");
return SUCCESS;
}
}
return ERROR;
}
public Blog getBlog() {
return blog;
}
public void setBlog(Blog blog) {
this.blog = blog;
}
}
UserAction:
package com.lwp.myblog.action;
import org.springframework.beans.factory.annotation.Autowired;
import com.lwp.myblog.model.User;
import com.lwp.myblog.service.UserServiceI;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 7552993278434695649L;
@Autowired
private UserServiceI userServiceI;
private User user;
public String queryUserByNameAndPsw() throws Exception
{ System.out.println("哈哈哈哈哈哈");
System.out.println("UserAction's queryUserByNameAndPsw");
System.out.println("username:"+user.getUsername());
System.out.println("password"+user.getPassword());
if(user!=null)
{
System.out.println("进入if");
if(userServiceI.queryUserByNameAndPsw(user))
{
return SUCCESS;
}
System.out.println("if后");
}
return ERROR;
}
public String execute() throws Exception
{
System.out.println("哈哈哈哈哈哈");
System.out.println("UserAction's execute");
System.out.println("username:"+user.getUsername());
System.out.println("password:"+user.getPassword());
if(user!=null)
{
System.out.println("进入if");
if(userServiceI.queryUserByNameAndPsw(user))
{
return SUCCESS;
}
System.out.println("if后");
}
return ERROR;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserServiceI getUserServiceI() {
return userServiceI;
}
public void setUserServiceI(UserServiceI userServiceI) {
this.userServiceI = userServiceI;
}
}
package com.lwp.myblog.dao;
import org.apache.ibatis.annotations.Insert;
import com.lwp.myblog.model.Blog;
public interface BlogMapper {
@Insert("insert into blog values(#{blogId},#{title},#{classification},#{content})")
public Integer addBlog(Blog blog);
}
package com.lwp.myblog.dao;
import org.apache.ibatis.annotations.Select;
import com.lwp.myblog.model.User;
public interface UserMapper {
@Select("select * from users where username=#{username} and password=#{password}")
public User queryUserByNameAndPsw(User user);
}
BlogMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.lwp.myblog.dao.BlogMapper">
<resultMap type="com.lwp.myblog.model.Blog" id="blogResult">
<result property="blogId" column="blogId" />
<result property="title" column="title" />
<result property="classification" column="classification" />
<result property="content" column="content" />
</resultMap>
<insert id="addBlog" parameterType="com.lwp.myblog.model.Blog" resultType="Integer">
insert into
blog
values(#{blogId},#{title},#{classification},#{content})
</insert>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.lwp.myblog.dao.UserMapper">
<resultMap type="com.lwp.myblog.model.User" id="userResult">
<result property="username" column="username" />
<result property="password" column="password" />
</resultMap>
<select id="queryUserByNameAndPsw" parameterType="com.lwp.myblog.model.User" resultType="com.lwp.myblog.model.User">
select *
from users
where username=#{username} and password=#{password}
</select>
</mapper>
Blog.java:
package com.lwp.myblog.model;
public class Blog {
private String blogId;
private String title;
private String classification;
private String content;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getClassification() {
return classification;
}
public void setClassification(String classification) {
this.classification = classification;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getBlogId() {
return blogId;
}
public void setBlogId(String blogId) {
this.blogId = blogId;
}
}
User.java:
package com.lwp.myblog.model;
public class User {
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;
}
}
BlogServiceI.java:
package com.lwp.myblog.service;
import com.lwp.myblog.model.Blog;
public interface BlogServiceI {
public abstract boolean addBlog(Blog blog);
}
package com.lwp.myblog.service;
import com.lwp.myblog.model.User;
public interface UserServiceI {
//void test();
//public abstract boolean queryUserByNameAndPsw(User user);
public abstract boolean queryUserByNameAndPsw(User user);
}
BlogServiceImpl.java:
package com.lwp.myblog.serviceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lwp.myblog.dao.BlogMapper;
import com.lwp.myblog.model.Blog;
import com.lwp.myblog.service.BlogServiceI;
@Service("blogServiceI")
public class BlogServiceImpl implements BlogServiceI{
@Autowired
private BlogMapper blogMapper;
@Override
public boolean addBlog(Blog blog) {
if(blogMapper.addBlog(blog)==1)
{
return true;
}
return false;
}
public void setBlogMapper( BlogMapper blogMapper)
{
this.blogMapper= blogMapper;
}
public BlogMapper getBlogMapper()
{
return blogMapper;
}
}
UserServiceImpl.java:
package com.lwp.myblog.serviceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lwp.myblog.dao.UserMapper;
import com.lwp.myblog.model.User;
import com.lwp.myblog.service.UserServiceI;
@Service("userServiceI")
public class UserServiceImpl implements UserServiceI{
@Autowired
private UserMapper userMapper;
//private UserDaoI userDaoI;
/*UserDaoI userDaoI = SqlSessionTemplateHolder.getSqlSession().getMapper(UserDaoI.class);*/
/*protected <C> C getMapper(Class<C> mapperClass) {
return SqlSessionTemplateHolder.getSqlSession().getMapper(mapperClass);
}*/
@Override
public boolean queryUserByNameAndPsw(User user) {
System.out.println("UserServiceImpl's queryUserByNameAndPsw");
System.out.println("UserServiceImpl's username1:"+user.getUsername());
//User u=new User();
if(userMapper.queryUserByNameAndPsw(user)!=null)
{
System.out.println("UserServiceImpl's if");
System.out.println("userMapper.queryUserByNameAndPsw(user)username:"+userMapper.queryUserByNameAndPsw(user).getUsername());
return true;
}
return false;
}
public void setUserMapper( UserMapper userMapper)
{
this.userMapper= userMapper;
}
public UserMapper getUserMapper()
{
return userMapper;
}
}
struts-blog.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>
<package namespace="/" name="blog" extends="struts-default">
<action name="blogEdit" class="com.lwp.myblog.action.BlogEditAction" method="execute">
<result name="success">/main/main.jsp</result>
<result name="error">/common/error.jsp</result>
</action>
</package>
</struts>
struts-user.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>
<package namespace="/" name="user" extends="struts-default">
<action name="user" class="com.lwp.myblog.action.UserAction" method="execute">
<result name="success">/main/main.jsp</result>
<result name="error">/common/error.jsp</result>
</action>
</package>
</struts>
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task" xmlns:context="http://www.springframework.org/schema/context"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
">
-->
<!-- <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
"> -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task" xmlns:context="http://www.springframework.org/schema/context"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
">
<!-- 指定数据源配置文件 -->
<context:property-placeholder location="classpath:*.properties" ignore-unresolvable="true" />
<!-- 配置要扫描的包 -->
<context:component-scan base-package="com.lwp.myblog"></context:component-scan>
<!-- 数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driverClass}</value>
</property>
<property name="url">
<value>${jdbc.jdbcUrl}</value>
</property>
<property name="username">
<value>${jdbc.user}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- <property name="mapperLocations" value="classpath*:com/lwp/myblog/mapper/*.xml" /> -->
<property name="configLocation" value="classpath:mybatis_config.xml" />
</bean>
<!-- 指定DAO层 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.lwp.myblog.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
<!-- 使用Spring的事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- <bean id="UserMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.lwp.myblog.dao.UserMapper"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean> -->
</beans>
jdbc.database = Oracle
jdbc.driverClass = oracle.jdbc.driver.OracleDriver
jdbc.jdbcUrl = jdbc:oracle:thin:@10.33.25.25:1521:orcl
jdbc.user = LWP
jdbc.password =liuliu
log4j.properties:
log4j.rootCategory=info,console,file
log4j.appender.console=org.apache.log4j.ConsoleAppender
#log4j.appender.console.Threshold=info
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[MyBlog] %d - %C [%t] %-5p %x- %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.file.Threshold=info
#log4j.appender.file.File=${catalina.home}/logs/plat.log
log4j.appender.file.File=e:/file.log
log4j.appender.file.MaxFileSize=5120KB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[MyBlog] %d - %C [%t] %-5p %x- %m%n
mybatis_config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="users" type="com.lwp.myblog.model.User"/>
</typeAliases>
<!-- <mappers>
<mapper resource="com/lwp/myblog/mapper/*.xml"/>
</mappers> -->
</configuration>
spring.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
">
<!-- 引入属性文件,*.properties位于src/main/resources目录下 -->
<context:property-placeholder location="classpath:*.properties" />
<!-- 自动扫描dao和service包(自动注入) -->
<context:component-scan base-package="com.lwp.myblog" />
<!-- <context:component-scan base-package= "mn.spring.mvc.template.controller" /> -->
</beans>
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>
<!-- 指定由spring负责action对象的创建 -->
<constant name="struts.objectFactory" value="spring" />
<!-- 所有匹配*.action的请求都由struts2处理 -->
<constant name="struts.action.extension" value="action" />
<!-- 是否启用开发模式(开发时设置为true,发布到生产环境后设置为false) -->
<constant name="struts.devMode" value="false" />
<!-- struts配置文件改动后,是否重新加载(开发时设置为true,发布到生产环境后设置为false) -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 设置浏览器是否缓存静态内容(开发时设置为false,发布到生产环境后设置为true) -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<!-- 每次HTTP请求系统都重新加载资源文件,有助于开发(开发时设置为true,发布到生产环境后设置为false) -->
<constant name="struts.i18n.reload" value="true" />
<!-- 文件上传最大值 -->
<constant name="struts.multipart.maxSize" value="104857600" />
<!-- 让struts2支持动态方法调用,使用叹号访问方法 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- Action名称中是否还是用斜线 -->
<constant name="struts.enable.SlashesInActionNames" value="false" />
<!-- 允许标签中使用表达式语法 -->
<constant name="struts.tag.altSyntax" value="true" />
<!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
<constant name="struts.dispatcher.parametersWorkaround" value="false" />
<package name="basePackage" extends="struts-default">
<!-- <global-results>
<result name="error">/common/error.jsp</result>
<result name="json" type="json">
<param name="root">root</param>
<param name="excludeNullProperties">true</param>
</result>
</global-results> -->
</package>
<include file="struts/struts-*.xml"></include>
</struts>
blogEdit.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="blogEdit.css" />
<script
src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
var contextPath = "${pageContext.request.contextPath}";
$(function() {
$("#btn_publish").click(
function() {
var blog = {};
blog['blog.title'] = $("input[name='title']").val();
blog['blog.classification'] = $(
"select[name='classification']").val();
blog['blog.content'] = ue.getContent();
$.ajax({
type : "POST",
url : contextPath + "/blogEdit!execute.action",
data : blog,
dataType : "json",
success : function(data) {
art.dialog.tips('保存成功!');
}
});
});
});
</script>
</head>
<body>
<div id="header">
<h1>My Blog</h1>
</div>
<div id="container">
<form action="blogEdit.action" method="post">
标题<input type="input" name="title"> </br> </br> 分类 <select
name="classification">
<option value="select">请选择</option>
<option value="tech">技术</option>
<option value="trip">旅行</option>
<option value="film">电影</option>
<option value="book">书籍</option>
</select> </br> </br>
<!-- 加载编辑器的容器 -->
<script id="container" name="content" type="text/plain">
初始化内容
</script>
<input type="button" value="发表" id="btn_publish">
</form>
<!-- 配置文件 -->
<script type="text/javascript" src="ueditor/ueditor.config.js"></script>
<!-- 编辑器源码文件 -->
<script type="text/javascript" src="ueditor/ueditor.all.js"></script>
<!-- 实例化编辑器 -->
<script type="text/javascript">
//var ue = UE.getEditor('container');
var ue = UE.getEditor('container');
</script>
</div>
<div id="footer">liuwanping.com</div>
</body>
</html>
blogEdit.css:
@CHARSET "UTF-8";
#header {
background-color:black;
color:white;
text-align:center;
padding:5px;
}
#footer {
background-color:black;
color:white;
clear:both;
text-align:center;
bottom:0px;
left:0px;
width:100%;
position:absolute;
}
#container {
position:fixed;
width:50%;
left:25%;
top:15%;
}
#btn_publish{
position:fixed;
top:90%;
left:47%;
width:6%;
}
main.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="main/main.css" />
</head>
<body>
<div id="header">
<h1>My Blog</h1>
</div>
<a href="blogEdit/blogEdit.jsp"><input type="button" value="写博客" id="btn_blogEdit"></a>
<div id="container">
<div id="nav">
<ul id="menu">
<li id="tech" ><a href=""><h2>技术(a)</h2></a></li>
<li id="travel" ><a href=""><h2>旅行(b)</h2></a></li>
<li id="film" ><a href=""><h2>电影(c)</h2></a></li>
<li id="book" ><a href=""><h2>书籍(d)</h2></a></li>
</ul>
</div>
<div id="section">
<h2><input type="input" ></h2>
<p>
<input type="input" >
</p>
</div>
</div>
<div id="footer">
liuwanping.com
</div>
</body>
</html>
main.css:
@CHARSET "UTF-8";
#header {
background-color:black;
color:white;
text-align:center;
padding:5px;
}
#nav {
line-height:50px;
background-color:#eeeeee;
height:100%;
width:15%;
float:left;
display:inline;
position:fixed;
}
#section {
height:100%;
width:63%;
float:right;
margin-top:1%;
margin-left:16%;
margin-right:16%;
display:inline;
position:fixed;
overflow:hidden;
}
#footer {
background-color:black;
color:white;
clear:both;
text-align:center;
bottom:0px;
left:0px;
width:100%;
position:absolute;
}
ul li{
list-style:none;
}
#container{
border-color:#C0C0C0;
border-style: ridge;
height:100%;
width:80%;
margin:auto;
overflow:hidden;
margin-top:0.5%;
margin-left:10%;
margin-right:10%;
position:fixed;
}
#btn_blogEdit{
margin-top:3%;
margin-left:87%;
}
login.jsp:
<%@ 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>login</title>
</head>
<body>
<form action="user.action" method="post">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="user.username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="user.password"></td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
<td></td>
</tr>
</table>
<form>
</body>
</html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="2.4">
<!-- Spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring配置文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:*.xml</param-value>
</context-param>
<!-- Struts2的核心过滤器配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- Struts2过滤器拦截所有的.action请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>