Xdoclet用于servlet

本文介绍如何使用XDoclet注释自动生成web.xml配置文件,包括Servlet映射和安全角色设置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web.xmtaglib

servlet映射是个讨厌的工作,当你接收别的项目的时候,这个项目的servlet怎么用可能比较麻烦,可能当时web.xml的映射找不到了,这时怎么办呢?

 

看这个文件

package com.xdocletbook.blog.servlet;

import java.io.IOException;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Level;

import org.apache.log4j.Logger;


/**

* @web.servlet

* name="HomePage"

* @web.servlet-init-param

* name="LogLevel"

* value="{LOG_LEVEL}"

* @web.servlet-mapping

* url-pattern="/home"

*

* @web.security-role

*role-name="{OwnerRole}"

* @web.security-role-ref

*role-name="blogowner"

*role-link="{OwnerRole}"

*/

 public class HomePageServlet

extends HttpServlet {

private static Logger LOGGER = Logger.getLogger(HomePageServlet.class);

public void init() throws ServletException {

String logLevel = getInitParameter("LogLevel");

if (logLevel != null && logLevel.length() > 0) {

LOGGER.setLevel(Level.toLevel(logLevel));

}

}

public void service(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

LOGGER.debug("Displaying home page");

request.getRequestDispatcher("jsp/home.jsp").forward(request, response);

}

}

 

 

 

然后配置build.xml增加如下任务

 

<target name="generate-web">

<taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask" classpathref="xdoclet.classpath"/>

<!-- Generate servlet and JSP Tag "stuff" -->

<webdoclet destdir="gen" mergeDir="merge">

<fileset dir="src">

<include name="**/*.java" />

</fileset> 

<deploymentdescriptor destdir="web" distributable="false" />

</webdoclet>

</target>

 

 

 

然后运行ant generate-web

 

结果就是这样一个web.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

 <web-app >

<!--

To use non XDoclet filters, create a filters.xml file that

contains the additional filters (eg Sitemesh) and place it in your

project's merge dir.Don't include filter-mappings in this file,

include them in a file called filter-mappings.xml and put that in

the same directory.

-->

 

<!--

To use non XDoclet filter-mappings, create a filter-mappings.xml file that

contains the additional filter-mappings and place it in your

project's merge dir.

-->

 

<!--

To use non XDoclet listeners, create a listeners.xml file that

contains the additional listeners and place it in your

project's merge dir.

-->

 

<servlet>

<servlet-name>StrutsActionServlet</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

</servlet>

 

<servlet>

<servlet-name>HomePage</servlet-name>

<servlet-class>com.xdocletbook.blog.servlet.HomePageServlet</servlet-class>

 

<init-param>

<param-name>LogLevel</param-name>

<param-value>1</param-value>

</init-param>

 

<security-role-ref>

<role-name>blogowner</role-name>

<role-link>aOwner</role-link>

</security-role-ref>

</servlet>

 

<servlet-mapping>

<servlet-name>StrutsActionServlet</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

 

<servlet-mapping>

<servlet-name>HomePage</servlet-name>

<url-pattern>/home</url-pattern>

</servlet-mapping>

 

<!--

To specify mime mappings, create a file named mime-mappings.xml, put it in your project's mergedir.

Organize mime-mappings.xml following this DTD slice:

 

<!ELEMENT mime-mapping (extension, mime-type)>

-->

 

<!--

To specify error pages, create a file named error-pages.xml, put it in your project's mergedir.

Organize error-pages.xml following this DTD slice:

 

<!ELEMENT error-page ((error-code | exception-type), location)>

-->

 

<!--

To add taglibs by xml, create a file called taglibs.xml and place it

in your merge dir.

-->

 

<!--

To set up security settings for your web app, create a file named web-security.xml, put it in your project's mergedir.

Organize web-security.xml following this DTD slice:

 

<!ELEMENT security-constraint (display-name?, web-resource-collection+, auth-constraint?, user-data-constraint?)>

<!ELEMENT web-resource-collection (web-resource-name, description?, url-pattern*, http-method*)>

<!ELEMENT web-resource-name (#PCDATA)>

<!ELEMENT url-pattern (#PCDATA)>

<!ELEMENT http-method (#PCDATA)>

<!ELEMENT user-data-constraint (description?, transport-guarantee)>

<!ELEMENT transport-guarantee (#PCDATA)>

 

<!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>

<!ELEMENT auth-method (#PCDATA)>

<!ELEMENT realm-name (#PCDATA)>

<!ELEMENT form-login-config (form-login-page, form-error-page)>

<!ELEMENT form-login-page (#PCDATA)>

<!ELEMENT form-error-page (#PCDATA)>

-->

<security-role>

<role-name>aOwner</role-name>

</security-role>

</web-app>

  

 

 

 

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值